从客户端更新Meteor.users



我有一个表单,试图用以下助手向metro.user更新关于用户的额外信息

Template.Profile.events({
  'submit form': function(e) {
    e.preventDefault();
    var post = {
        firstName: $(e.target).find('[name=firstname]').val()
    };
    Meteor.users.update( { _id: Meteor.userId() }, { $set: { 'firstName': post.firstName }} );
  }
});

但是,更新失败:访问被拒绝

另一个问题是,我想知道我是应该直接对Meteor.users集合进行额外的更新,还是应该有一个单独的集合来存储这些数据。

感谢

由于您试图直接在基本用户对象上设置属性,因此收到了"拒绝访问"错误。根据Meteor.users的Meteor文件:

默认情况下,当前用户的usernameemailsprofile为发布到客户端。

这意味着您可以更新这些用户属性中的任何一个,但如果您想添加其他属性,最好将它们添加到其中一个已经存在的字段中。我建议在配置文件属性中添加类似"firstName"的内容。在这种情况下,您的代码看起来像这样:

Meteor.users.update({_id: Meteor.userId()}, {$set: {'profile.firstName': post.firstName}});

最新更新