基本上尝试通过在其配置文件对象中为其添加一个名为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
字段。我是在错误的位置做这个还是我的代码错了?
答案 0 :(得分:0)
试试这个
Accounts.onCreateUser(function (options, user) {
user.profile.sid = [post.content];
return user;
});
从其阅读的文档(http://docs.meteor.com/#/full/accounts_oncreateuser):
用户参数在服务器上创建,包含建议的用户对象...
所以此时看起来用户实际上还没有存在于数据库中。
答案 1 :(得分:0)
您传递的函数将使用两个参数调用: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集合上有拒绝规则,否则不要在您不希望用户编辑的配置文件中存储任何内容。