我有一个使用Meteor帐户包的项目。我有一个没有用户名字段的用户登录。当我在本地主机上运行时尝试更新它时,使用Meteor.users.update({}, {$set:{username:"Zach Ary"}})
它可以很好地工作,并且通过accounts-ui和meteor mongo
反映出这种变化。但是,当我将其部署到远程流星服务器并尝试更新它时,不会显示任何更改。有任何想法吗?
这是服务器上使用的代码(仅用于测试目的)
Meteor.users.allow({
update:function(userId, upd) {
console.log(upd)
return true;
}
})
由于
答案 0 :(得分:1)
不确定这是您的问题,但在开发服务器上Meteor自动发布您的所有馆藏。
捆绑和部署时,需要手动发布集合。
服务器上有这样的东西:
Meteor.publish("userData", function () {
return Meteor.users.find({_id: this.userId});
});
并在客户端
Meteor.subscribe("userData")
答案 1 :(得分:0)
好的,所以这让我措手不及。显然,这与将其发布到服务器无关,而只是一个误导性的巧合。问题源于我的更新命令Meteor.users.update({}, {$set:{username:"Zach Ary"}})
。为此,它需要Meteor.users.update({_id:Meteor.userId()}, {$set:{username:"Zach Ary"}})
。否则它会尝试更新以前登录过的用户。我不知道这是一个错误,还是一个被误解的功能,但它似乎可以解决这个问题。