我有一个注册按钮,只有在数据是唯一的情况下才会在mongo db collection中插入数据,否则用户应该保持在同一页面上。为了实现相同,我正在做upsert:true。这是我的节点js
的代码var mongoClient=require('mongodb').MongoClient;
var url='mongodb://localhost:27017/test';
app.post('/newuser', function(req, res) {
username=req.body.username;
password=req.body.password;
mongoClient.connect(url,function(err,db){
//console.log("connected")
db.collection('users',function(err,collection){
collection.update({username:username, password:password},{upsert:true},function(err,result){
res.send(result.insertedCount);
});
})
})
});
前端的代码是
$.ajax({
type:'POST',
url:'/newuser',
data:{
username:username,
password:password
},
success:function(result){
console.log(result);
if(result===1){
that.setState({
isLoggedin:true
})
}else{
alert("not inserted");
}
}
})
return false;
}
每次运行服务器时,都不会执行success函数。代码出了什么问题? 感谢。
答案 0 :(得分:1)
使用,您需要在更新查询中指定$ set。
collection.update(
{},
{$set: { username, password }},
{upsert:true},
function(err,result){
res.send(result);
}
编辑:发送result
对象,根据结果对象的nModified
,n
值进行检查,以获取更新和修改的记录数。