Javascript 如何在nodejs/mongodb上创建更新函数?
您好,我目前是nodejs和mongodb的新手,我想做的是创建一个函数来更新我的赢、输、从我的userschema中提取记录 我的模式:Javascript 如何在nodejs/mongodb上创建更新函数?,javascript,html,node.js,mongodb,mongoose,Javascript,Html,Node.js,Mongodb,Mongoose,您好,我目前是nodejs和mongodb的新手,我想做的是创建一个函数来更新我的赢、输、从我的userschema中提取记录 我的模式: UserSchema = new mongoose.Schema({ username:'string', password:'string', email:'string', //Change Made win:{ type: Number, default: 0 }, lose:{ type: Number
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
获取的用户对象的精确副本
您将user声明为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);
});
}
});
});
这是另一个问题。我无法从我的html文件中正确调用此函数:我在my home.js中使用的代码很抱歉,但是在注释中添加新问题在StackOverflow上确实不是一个好的礼仪。看起来你可能没有提交表单数据?你有一个按钮,但它不是提交按钮。现在开始工作,调用函数,但调用函数后,我得到一个错误,称为ReferenceError:Users未在app.get.req.session.loggedIn中定义。但我已经在我的模式和形式中做了,对吗你一直在改变问题。