基本上我想在插入数据之前检查数据库中是否存在特定数据(使用本机mongodb驱动程序),所以我试图使用collection.findOne()
来检查数据是否存在,如果collection.insert()
执行的属性属性为null。在mongodb中插入数据时添加条件
显然我的代码不是按照逻辑工作的,请有人赐教!
我的一些代码:
exports.addUser = function(req, res) {
var twitterId = req.body.provider;
var userEmail = req.body.email;
db.collection('users', function(err, collection) {
collection.findOne({'email':userEmail }, function(err, item){
if(item.email === null){
collection.insert({
'email': userEmail,
'provider': {
'twitter': {
'id': twitterId
}
}
}, function(err, result) {
if (err) {
res.send({'error':'An error has occurred'});
} else {
console.log('Success: ' + JSON.stringify(result[0]));
res.send(result[0]);
}
});
}else{
console.log("Email exits ");
}
});
});
}
我想我有一个线索,upsert可能是解决它的方法......? – nihulus
正确的,你想要做的是['collection.update'](http://mongodb.github.com/node-mongodb-native/api-generated/collection.html#update)'upsert:true '选项。 – JohnnyHK