Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在meteor中向用户集合添加字段的正确方法_Javascript_Mongodb_Meteor - Fatal编程技术网

Javascript 在meteor中向用户集合添加字段的正确方法

Javascript 在meteor中向用户集合添加字段的正确方法,javascript,mongodb,meteor,Javascript,Mongodb,Meteor,因此,我试图向用户集合添加一个“account\u type”字段 Meteor.startup(function () { if (Meteor.users.find().count() === 0){ var user = Accounts.createUser({ email: 'email@fake.com', password: 'password' }); Meteor.users

因此,我试图向用户集合添加一个“account\u 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()帐户类型时,它是未定义的

我也在某个地方读到这样的东西可能是必要的:

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.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.\u id

您应该使用函数的回调来获得结果:

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.\u id

如果您想让帐户类型在客户端上可见,则需要使用所需字段创建发布/订阅频道。Meteor默认只发布
用户名
电子邮件
个人资料
。在99%的情况下,调用方法从db中获取字段是个坏主意

首先,服务器代码:

Meteor.publish('users', function() {
    return Meteor.users.find({}, {fields: {accountType: 1}});
});
客户:

Deps.autorun(function() {
    Meteor.subscribe('users');
});

运行此操作后,接下来请确保客户端不会获取有关其他用户的敏感信息。

如果希望在客户端上显示帐户类型,则需要使用所需字段创建发布/订阅频道。Meteor默认只发布
用户名
电子邮件
个人资料
。在99%的情况下,调用方法从db中获取字段是个坏主意

首先,服务器代码:

Meteor.publish('users', function() {
    return Meteor.users.find({}, {fields: {accountType: 1}});
});
客户:

Deps.autorun(function() {
    Meteor.subscribe('users');
});

运行此操作时,接下来请确保客户端不会获取其他用户的敏感信息。

这是错误的:
帐户。createUser
返回已创建用户的
\u id
,而不是整个对象。这是错误的:
帐户。createUser
返回已创建用户的
\u id
,不是整个对象。提示:与其说是
find({u id:uid})
,不如说是编写速记形式
find(uid)
,它们是等价的。提示:与其说是
find({u id:uid})
不如说是编写速记形式
find(uid)
,它们是等价的。这似乎还不能正常工作。我尝试记录Meteor.users.update({u-id:user},{$set:{account\u-type:'admin'})并且它表示未定义。这可能是失败的原因吗?这似乎不起作用。我尝试记录Meteor.users.update({u-id:user},{$set:{account\u-type:'admin'})并且它表示未定义。这是失败的原因吗?