[英]Accounts.onCreateUser not adding field to Meteor's user collection
[英]Meteor: trying to add another field to the user profile Accounts.onCreateUser();
基本上是尝试通过在配置文件对象中为其添加一个名为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
字段。 我在错误的位置执行此操作还是我的代码错误?
试试这个
Accounts.onCreateUser(function (options, user) {
user.profile.sid = [post.content];
return user;
});
从文档中读取的内容( http://docs.meteor.com/#/full/accounts_oncreateuser ):
用户参数在服务器上创建,并包含一个建议的用户对象...
因此,在这一点上,用户似乎实际上尚未存在于数据库中。
您传递的函数将使用两个参数调用:options和user。 options参数来自基于密码用户的Accounts.createUser或来自外部服务登录流。 选项可能来自不受信任的客户端,因此请确保验证从其中读取的所有值。 user参数在服务器上创建,包含一个建议的用户对象,其中包含用户登录所需的所有自动生成的字段,包括_id。
该函数应返回用户文档(无论是传入的文档还是新创建的对象),并且需要进行任何修改。 返回的文档将直接插入Meteor.users集合中。
因此,您的代码应为:
Accounts.onCreateUser(function (options, user) {
user.profile.sid = [post.content];
return user;
});
但是请注意,user.profile对象中的任何内容都可以由用户更改 。
配置文件:用户可以创建并使用任何数据更新的对象。 除非您对Meteor.users集合具有拒绝规则,否则不要在用户不希望编辑的配置文件上存储任何内容。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.