Col*_*ole 2 data-modeling meteor
我想在我的流星应用程序中存储每个登录用户的信息,例如他们的个人资料图片,生物等.但是,如果我尝试做像Meteor.user()那样的事情.picLink ="..."; 它似乎在每次后续调用Meteor.user()时被删除.我认为这意味着我不应该直接在用户对象上存储额外的数据.
我能想到的唯一回应是在其中包含一个包含用户数据的单独集合.但这似乎很难与Meteor.users保持一致.有没有更好的办法?
所有用户帐户都附带一个自动发布的profile字段,您可以像这样更新:
var userId = Meteor.userId();
var url = 'http://example.com/kittens.jpg';
Meteor.users.update(userId, {$set: {'profile.photo': url});
Run Code Online (Sandbox Code Playgroud)
这将更新底层数据库并在连接中保持不变.
正如我在此指出的那样,您应该知道默认情况下,即使insecure已删除包,配置文件对象也是可编辑的.这意味着任何用户都可以打开控制台并修改他/她的个人资料.
更好的方法是拒绝更新并使用方法:
var url = 'http://example.com/kittens.jpg';
Meteor.call('update.photo', url);
Run Code Online (Sandbox Code Playgroud)
Meteor.users.deny({
update: function() {return true;}
});
Meteor.methods({
'update.photo': function(url) {
check(url, String);
Meteor.users.update(this.userId, {$set: {'profile.photo': url}});
}
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1185 次 |
| 最近记录: |