如何在meteor.js中更新Mongo.db集合?

Ian*_*ise 8 javascript mongodb meteor

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

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

  db.users.update({username : "Jack"},{age : 13, username : "Jack"});
Run Code Online (Sandbox Code Playgroud)

但是当我输入这段代码时:

Template.body.events({
'click #updateAge' = function() {
         {
              alert();
              db.users.update({username : "Jack"},{age : 13, username : "Jack"});
         }
    }

})
Run Code Online (Sandbox Code Playgroud)

进入我的Meteor.js的JavaScript文件,它根本不做任何事情(我没有收到错误消息,我看到警报,但更新不起作用).

我已经阅读了关于更新的Meteor文档,但我似乎无法让它工作.有谁知道我在这里做错了什么?

Ian*_*ise 10

发现了问题.

因为我在lib.js文件中定义了我的数据库

users = new Meteor.collection("users");

我不需要在前面放一个数据库db.users.update({_id : "Jack"},{...}).我还需要使用给定的mongo _id而不是标识符来查找文档"username".

所以适当的代码将是

users.update({_id : "Jack"},{$set:{age : 13, username : "Jack"}});
Run Code Online (Sandbox Code Playgroud)

  • 自从我使用meteor或mongo以来已经很长时间了,但如果我没记错,$ set将只更新指定的值(在这种情况下为age和username).如果有其他值,例如"性别",$ set将不会删除,因为我们没有在此定义"性别". (2认同)