正如标题所说,我的用户对象一旦到达客户端就会丢失字段。
以下是我正在使用的软件包列表:
这是我的客户端代码。在模板事件中
var firstname = $("#firstname").val()
var lastname = $("#lastname").val()
var email = $("#email").val()
Meteor.call("createAdmin", firstname, lastname, email, function(error, result) {
if(error) {
console.log("ERROR: " + error);
} else {
console.log(JSON.stringify(result));
}
}
这是我的服务器代码,流星方法:
createAdmin: function(firstname, lastname, email) {
var loggedInUser = Meteor.user()
if (!loggedInUser || !Roles.userIsInRole(loggedInUser, ['dc-admin'])) {
throw new Meteor.Error(403, "Access denied")
} else {
var id;
id = Accounts.createUser({email: email, password: "testpassword",
profile: { first_name: firstname, last_name: lastname }
});
Roles.addUsersToRoles(id, ['dc-admin']);
return Meteor.users.findOne({_id: id});
}
},
如果我在客户端记录返回的结果,我会得到这样的结果:
{"_id":"7j8RKLXiJZM6QqEkY",
"createdAt":"2015-03-25T23:57:31.859Z",
"services":
{"password":{"bcrypt":"$2a$10$Y3C6wy5Z5nxYbVnjHDRTkeshQOhI3LjEux7s24e/Wc3SOV2e1E/7a"}
},"emails": [{"address":"qweqwe@example.com","verified":false}],
"profile":{
"first_name":"sdfdsfds",
"last_name":"qweqewqe"},
"roles":
["dc-admin"]}
然而,一旦我真的尝试在客户端或者在服务器上获取记录,我只能得到这样的东西(并记住我仍然有自动发布+不安全的开发:
{"_id":"7j8RKLXiJZM6QqEkY","profile":{"first_name":"sdfdsfds","last_name":"qweqewqe"}}
如果有人能指出为什么这些电子邮件,角色和其他字段可能会在服务器端Meteor方法执行完毕后被删除,那我真的很开心!