我有这个代码
var UserSchema = new Schema({
Username: {type: String, index: true},
Password: String,
Email: String,
Points: {type: Number, default: 0}
});..。
var User = db.model('User');
/*
* Function to save the points in the user's account
*/
function savePoints(name, points){
if(name != "unregistered user"){
User.find({Username: name}, function(err, users){
var oldPoints = users[0].Points;
var newPoints = oldPoints + points;
User.update({name: name}, { $inc: {Points: newPoints}}, function(err){
if(err){
console.log("some error happened when update");
}
else{
console.log("update successfull! with name = " + name);
User.find({Username: name}, function(err, users) {
console.log("updated : " + users[0].Points);
});
}
});
});
}
}
savePoints("Masiar", 666);我想通过更新他/她的点数来更新我的用户(通过查找其名称)。我确信oldPoints和points包含一个值,但我的用户仍然是零点。控制台打印“更新成功”。
我做错了什么?很抱歉问了这个愚蠢的/菜鸟问题。
马西亚尔
发布于 2011-11-22 09:46:13
看起来你在做一些不规范的事情:
如果您只想加载一个用户,请使用findOne而不是find
Model.update来更新您尚未添加的记录loaded
$inc正在添加oldPoints,因此新值将为2* newPoints
Username使用oldPoints而不是oldPoint作为条件查询
我会将代码重写为如下所示:
User.findOne({Username: name}, function(err, user){
if (err) { return next(err); }
user.Points += points;
user.save(function(err) {
if (err) { return next(err); }
});
});发布于 2016-08-23 08:33:37
关注我的代码员
User.update({ username: "faibaa" },
{ $inc: { point: 200000 } }, function(err,data){
return res.send(data);
});https://stackoverflow.com/questions/8218770
复制相似问题