Meteor:尝试将另一个字段添加到用户配置文件Accounts.onCreateUser();

时间:2015-10-02 01:29:45

标签: javascript meteor

基本上尝试通过在其配置文件对象中为其添加一个名为sid的额外字段来修改刚刚创建的用户。我在server.js(服务器代码)

上运行它
Accounts.onCreateUser(function (options, user) {      
        Meteor.users.update({_id: user._id}, {$set: {"user.profile.sid": [post.content]}});
});
    console.log(JSON.stringify(user));

但是,用户对象不会在其输出中显示sid字段。我是在错误的位置做这个还是我的代码错了?

2 个答案:

答案 0 :(得分:0)

试试这个

Accounts.onCreateUser(function (options, user) {      
    user.profile.sid = [post.content];
    return user;
});

从其阅读的文档(http://docs.meteor.com/#/full/accounts_oncreateuser):

  

用户参数在服务器上创建,包含建议的用户对象...

所以此时看起来用户实际上还没有存在于数据库中。

答案 1 :(得分:0)

From the docs

  

您传递的函数将使用两个参数调用:options和user。 options参数来自Accounts.createUser,用于基于密码的用户或来自外部服务登录流。选项可能来自不受信任的客户端,因此请确保验证从中读取的任何值。 user参数在服务器上创建,包含一个建议的用户对象,其中包含用户登录所需的所有自动生成的字段,包括_id。

     

该函数应返回用户文档(传入的文档或新创建的对象)以及所需的任何修改。返回的文档将直接插入到Meteor.users集合中。

所以你的代码应该是:

Accounts.onCreateUser(function (options, user) {      
    user.profile.sid = [post.content];
    return user;
});

However be aware that anything in the user.profile object can be changed by your users

  

profile:用户可以使用任何数据创建和更新的对象。除非您在Meteor.users集合上有拒绝规则,否则不要在您不希望用户编辑的配置文件中存储任何内容。