从客户端更新Meteor.users

时间:2015-04-02 08:01:39

标签: javascript meteor

我有一个表单尝试使用以下帮助程序更新meteor.users以及有关用户的额外信息

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集合进行额外更新,或者我是否应该有一个单独的集合来存储这些数据。

感谢

1 个答案:

答案 0 :(得分:3)

由于您尝试直接在基本用户对象上设置属性,因此您收到“拒绝访问”错误。根据{{​​3}}的Meteor文档:

  

默认情况下,当前用户的usernameemailsprofile是   发布给客户。

这意味着您可以更新任何这些用户属性,但如果要添加其他用户属性,最好将它们添加到其中一个已存在的字段中。我建议在profile属性中添加类似`firstName'的东西。在这种情况下,您的代码看起来像这样:

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