我在nodejs/mongodb上的更新函数上做错了什么
What am I doing wrong on my 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 }
});
var db = mongoose.createConnection(app.get('MONGODB_CONN')),
User = db.model('users', UserSchema);
我的更新功能:
app.post('/user/updateScores',function(req, res){
try{
var query = req.body.username;
User.findOneAndUpdate(query, { win : req.body.win, lose : req.body.lose, draw : req.body.draw }, function (err,user){
if (err) res.json(err) ;
req.session.loggedIn = true;
res.redirect('/user/' + user.username);
});
}
catch(e){
console.log(e)
}
});
问题是当我尝试更新时,它会更新当前数据,但会转到空白页并抛出异常,指出:
ReferenceError: win is not defined
at eval (eval at <anonymous> (C:'Users'ryan-utb'Desktop'RockScissorsPaper'node_modules'underscore'underscore.js:1176:16), <anonymous>:5:9)
at template (C:'Users'ryan-utb'Desktop'RockScissorsPaper'node_modules'underscore'underscore.js:1184:21)
at Function.exports.underscore.render (C:'Users'ryan-utb'Desktop'RockScissorsPaper'node_modules'consolidate'lib'consolidate.js:410:14)
at C:'Users'ryan-utb'Desktop'RockScissorsPaper'node_modules'consolidate'lib'consolidate.js:106:23
at C:'Users'ryan-utb'Desktop'RockScissorsPaper'node_modules'consolidate'lib'consolidate.js:90:5
at fs.js:266:14
at Object.oncomplete (fs.js:107:15)
但我已经正确定义了胜利,似乎有什么问题?
User.update(
{username:req.body.username},
{ win : req.body.win, lose : req.body.lose, draw : req.body.draw },
function (err, data) { //look - no argument name "user" - just "data"
//2 mistakes here that you should learn to never do
//1. Don't ignore the `err` argument
//2. Don't assume the query returns something. Check that data is not null.
console.log(data);
//The next line must be INSIDE this function in order to access "data"
res.redirect('/user/' + data.username);
});
//ACK don't try to access "data" (or "user") here. this is asynchronous code!
//this code executes EARLIER IN TIME than the User.update callback code
在代码段 v2 之后更新
- 您的
find
调用根本不匹配任何文档,因此user
为空 - 仅供参考,您可以通过单个
findOneAndUpdate
操作同时进行查找和更新
User.update({
username: req.body.username
},{
$set: {
win : req.body.name,
loose : req.body.loose
}
}, function(err, result) {
if (err) {
console.log(err);
} else if (result === 0) {
console.log("user is not updated");
} else {
console.log("user is updated");
}
});
我希望您能了解您的问题并可以更新您的用户集合。
相关文章:
- 我怎么把范围弄错了?无法从jQuery访问此函数;.在“上”;
- JavaScript 错误:未捕获的类型错误:undefined 不是第 4 行的函数;我不知道我做错了什么
- 在 c#.net 中执行 javascript 函数.我做错了什么
- Javascript Date.getTime 函数没有返回正确的值,或者我做错了什么
- D3 TypeError: link.exit 不是函数 link.exit().remove();我做错了什么
- 当单击jquery-ui选项卡时,我需要运行一个函数,我做错了什么
- 我在nodejs/mongodb上的更新函数上做错了什么
- 回调不是一个函数:我做错了什么
- 函数仍在异步调用.我做错了什么
- 我有一个javascript函数,我可以'Don't tell what I;我做错了
- 我的谷歌电子表格脚本只运行一个函数.我把剧本编错了吗
- 在类的每个项上运行jquery函数,我做错了什么
- 我以为我有一个this引用传递到Javascript闭包中的私有函数,我想错了
- onComplete属性必须是javascript函数名;我打错了什么?
- Backbone.Model.extend()不是一个函数,我做错了什么?
- appendChild不是一个函数-我做错了什么?
- AngularJS-链接函数中的作用域被重置,我做错了什么
- 什么'错了我的ajax函数获取图像
- 中值JS函数.错了
- 使用JavaScript函数作为“类”:我在这里做错了什么?