所以我正在尝试将“account_type”字段添加到用户集合中。
Meteor.startup(function () {
if (Meteor.users.find().count() === 0){
var user = Accounts.createUser({
email: 'email@fake.com',
password: 'password'
});
Meteor.users.update({_id: user}, {$set : {account_type: 'admin'}});
}
});
当我致电Meteor.user().account_type
时,它未定义。
我也在某处读过这样的事情:
Meteor.methods({
get_user: function(user_id){
return Meteor.users().find({ _id: user_id}, {fields: {account_type: 1}});
}
});
但是当我打电话时,我再次被定义为:
console.log(Meteor.call('get_user', Meteor.userId()));
添加到用户模型的正确方法是什么?
答案 0 :(得分:5)
如果您希望在客户端上显示帐户类型,则需要创建包含所需字段的发布/订阅频道。默认情况下,Meteor仅发布username
,email
和profile
。在99%的情况下,调用一个从db获取字段的方法是一个坏主意。
首先,服务器代码:
Meteor.publish('users', function() {
return Meteor.users.find({}, {fields: {accountType: 1}});
});
客户端:
Deps.autorun(function() {
Meteor.subscribe('users');
});
当您开始运行时,请确保客户端无法获取有关其他用户的敏感信息。
答案 1 :(得分:-1)
您应该使用函数的回调来获得结果:
Meteor.call('get_user', Meteor.userId(), function(error, result){
// do something with result
console.log(error, result);
});
对于另一位,请尝试:
Meteor.startup(function () {
if (Meteor.users.find().count() === 0){
var user = Accounts.createUser({
email: 'email@fake.com',
password: 'password'
});
Meteor.users.update({_id: user._id}, {$set : {account_type: 'admin'}});
}
});
请注意,我添加了user._id
。