Javascript 如何在nodejs/mongodb上创建更新函数?

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

您好,我目前是nodejs和mongodb的新手,我想做的是创建一个函数来更新我的赢、输、从我的userschema中提取记录

我的模式:

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中定义。但我已经在我的模式和形式中做了,对吗你一直在改变问题。