[英]How to create an update function on nodejs/mongodb?
嗨,我目前对nodejs和mongodb并不熟悉,我想做的是创建一个函数来更新我的用户图表上的胜利,失败,平局记录。
我的架构:
UserSchema = new mongoose.Schema({
username:'string',
password:'string',
email:'string',
//Change Made
win:{ type: Number, default: 0 },
lose:{ type: Number, default: 0 },
draw:{ type: Number, default: 0 }
});
我的更新功能:
//Update scores
app.post("/user/updateScores", function (req, res) {
var user = new User({
username:req.body.username,
win:req.body.win,
lose:req.body.lose,
draw:req.body.draw
});
Users.findOne({ username : req.params.username }, function(error, user) {
if (error || !user) {
res.send({ error: error });
} else {
user.update(function (err, user) {
if (err) res.json(err)
req.session.loggedIn = true;
res.redirect('/user/' + user.username);
});
}
});
});
问题是当我尝试通过html文件进行更新时。 它不会更新任何内容,而是保持不变(值win,lose,draw的默认值为0,因此当我注销并再次登录时,win,lose,draw记录的值仍为零)。 我彻底检查了问题是否出在我制作的html和javascript函数上,但事实并非如此,因此我认为问题出在我制作的更新函数上。 你们中有人知道我哪里出问题了吗? 谢谢!
假设从客户端正确调用了您的post
则需要注意变量和参数的名称,因为当前的作用域是您保存的是通过findOne
获取的用户对象的精确副本。
您已经将用户声明为post
回调的变量,然后又将其声明为findOne
。 内部变量user
将优先。
app.post("/user/updateScores", function (req, res) {
var username = req.body.username;
Users.findOne({ username : username }, function(error, user) {
if (error || !user) {
res.send({ error: error });
} else {
// update the user object found using findOne
user.win = req.body.win;
user.lose = req.body.lose;
user.draw = req.body.draw;
// now update it in MongoDB
user.update(function (err, user) {
if (err) res.json(err) {
req.session.loggedIn = true;
}
res.redirect('/user/' + user.username);
});
}
});
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.