如何更新meteor.js中的Mongodb集合?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何更新meteor.js中的Mongodb集合?相关的知识,希望对你有一定的参考价值。

当用户按下按钮时,我需要更新一个集合。我只需要将一个变量更改为另一个变量。

在控制台中,这行代码有效:

  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"},{...})前放一个数据库。我还需要使用给定的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);
}

})

以上是关于如何更新meteor.js中的Mongodb集合?的主要内容,如果未能解决你的问题,请参考以下文章

日期查询之间的 Meteor.js / MongoDB 不返回数据

meteor.js 是如何更新模板数据的?

如何在 javascript (meteor.js) 中操作返回的 mongo 集合/游标?

查询由另一个 Meteor js 应用程序中的应用程序创建的集合

在 Meteor.js 中使用多个 Mongodb 数据库

MongoDB / Meteor / 将 MONGO_URL 导出到已部署的应用程序