[英]how to update a Mongo.db collection in meteor.js?
当用户按下按钮时,我需要更新一个集合。 我只需要将一个变量更改为另一个变量。
在控制台中,这行代码有效:
db.users.update({username : "Jack"},{age : 13, username : "Jack"});
但是当我输入这段代码时:
Template.body.events({
'click #updateAge' = function() {
{
alert();
db.users.update({username : "Jack"},{age : 13, username : "Jack"});
}
}
})
进入我的Meteor.js的JavaScript文件,它根本不做任何事情(我没有收到错误消息,我看到警报,但更新不起作用)。
我已经阅读了关于更新的Meteor文档,但我似乎无法让它工作。 有谁知道我在这里做错了什么?
发现了问题。
因为我在lib.js文件中定义了我的数据库
users = new Meteor.collection("users");
我不需要在db.users.update({_id : "Jack"},{...})
前放置一个db。 我还需要使用给定的mongo _id
查找文档,而不是标识符"username"
。
所以适当的代码将是
users.update({_id : "Jack"},{$set:{age : 13, username : "Jack"}});
在mongodb中,您必须使用更新运算符(例如: $set
)。 否则,您的文档将被您传递的更新对象覆盖( 我不确定这是您想要的 )。 我认为,它在流星中的作用相同。 所以,你必须做这样的事情:
Meteor.users.update({username : "Jack"},{$set: {age : 13}});
这可能不是问题,因为您已经声明没有收到错误消息但是要确定:您是否已经允许用户更新用户集合中的文档?
就像是:
(在collections / permissions.js中)
user.allow({
update: function (userId) {
// the user must be logged in to allow updates
return (userId != null);
}
})
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.