向集合中的当前文档添加新字段时,Meteor.users.update访问被拒绝

时间:2015-02-10 22:03:17

标签: mongodb meteor meteor-accounts mongodb-update

我希望在当前文档中添加一个新字段(将来使用$ push填充的数组),但收到错误update failed: MongoError: Cannot apply $push/$pushAll modifier to non-array

我正在使用Meteor.users集合。

代码运行是:

var user = Meteor.userId();
Meteor.users.update({_id:user}, {$set: {"newfield": ["some data"]}});

2 个答案:

答案 0 :(得分:5)

这是因为您不应该更改用户对象的根字段。来自the docs

  

默认情况下,当前用户的usernameemailsprofile会发布到客户端。您可以使用[...]

发布其他字段

所以你可以

Meteor.users.update(user, {$set: {"profile.newfield": ["some data"]}});

请注意,您应该limit store in profile

答案 1 :(得分:1)

您需要将“newfield”定义为数组,否则操作将失败。见这里:http://docs.mongodb.org/manual/reference/operator/update/push/#up._S_push