在流星中向用户集合添加字段的正确方式
Proper way to add field to the user collection in meteor
因此,我正在尝试向用户集合添加一个"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()));
添加到用户模型的正确方式是什么?
如果您想让帐户类型在客户端上可见,您需要创建具有所需字段的发布/订阅通道。Meteor默认只发布username
、email
和profile
。在99%的情况下,调用一个方法从数据库中获取字段是个坏主意。
首先,服务器代码:
Meteor.publish('users', function() {
return Meteor.users.find({}, {fields: {accountType: 1}});
});
客户:
Deps.autorun(function() {
Meteor.subscribe('users');
});
当您运行此程序时,接下来请确保客户端不会获取有关其他用户的敏感信息。
您应该使用函数的回调来获得结果:
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
。
相关文章:
- 简单的Javascript方式,在输入字段的每5位数字后添加一个空格
- 如何使文本、数字和日期html输入字段以一致的方式支持Ctrl+Z(撤消)
- 有没有一种快捷方式可以让我用javascript或jQuery设置对象的字段
- 提交多个输入字段 jQuery/PHP 的最佳方式
- 对数据库中字段的求和方式
- 使用托管字段时如何处理现有客户付款方式
- 在流星中向用户集合添加字段的正确方式
- 设置“动态输入”字段的角度方式
- 在主干模型/视图上处理更复杂的验证逻辑(必填字段等)的最佳方式
- 控制器侧的输入字段保存方式不同(angularjs)
- jQuery-用列表数据填充隐藏字段的最佳方式
- 引导模式对话框文本字段在我以编程方式更改值后不会更新,直到用户在该字段中键入
- 在javascript中以编程方式向输入字段添加onclick事件不起作用
- 当在环回中创建模型实例时,如何以编程方式填充字段
- 将表单中的多个值字段发送到aspx web表单的高效且轻松的方式
- 任何方式更新一个JS对象,但保持以前的字段不变
- 简单的方式来改变输入字段的视觉顺序动态(不改变表单HTML)
- 如何在jqgrid的编辑表单中显示只读字段或其他方式来显示从只读列的整个文本
- 简洁的方式获取所有输入字段的值
- 将事件附加到动态呈现字段的更简洁的方式