【发布时间】:2015-07-02 08:38:09
【问题描述】:
我已经尝试过寻找答案,但似乎无法正常工作。我正在使用 Meteor 和 Cordova 来构建一个移动应用程序。
我想向我的用户集合添加一个属性(我登录时创建的一个流星)。 IE。例如,我想将 {currentHotel: "Something"} 添加到我的 db.Users 集合中。
我正在尝试以正确的发布 - 订阅方式执行此操作。使用 Meteor.methods 被引用为不适合实时应用程序。无论哪种方式,我都想了解如何使用发布 - 订阅更新用户集合。
//On the server, I did
Meteor.publish("userData", function () {
return Meteor.users.find({_id: this.userId},
{fields:{services: 1, currentHotel: 1}});
});
因此,客户端应该可以访问 currentHotel 字段。现在更新“currentHotel”字段:
//On the client I do
Meteor.subscribe('userData');
var user = Meteor.users.findOne({"_id": Meteor.userId()});
Meteor.users.update({_id: user._id}, {$set:{currentHotel:'something'}});
//I tried this too
//Meteor.users.update({ _id: Meteor.userId() }, {$set: });
在浏览器控制台上,我可以看到“currentHotel”和“services”,这意味着发布-订阅工作正常。然而,我似乎无法更新 currentHotel。我收到拒绝访问。这是为什么呢?
此外,如果集合中根本不存在“currentHotel”属性,我如何使用类似的发布-订阅来添加它?我可以发布不存在的属性并允许客户端订阅和添加该属性吗?
我参考了 Meteor 文档,this、this 和 this,但似乎仍然无法正常工作! :-(
提前致谢!
【问题讨论】:
标签: mongodb collections meteor publish-subscribe meteor-accounts