0

就像问题问的那样,这可以做到吗?

我想将一组用户链接插入到当前用户的个人资料中。我在客户端尝试了类似的操作,但没有成功:

Meteor.users.update( {_id: Meteor.userId()}, {
        $set: {
            profile: {
                userlinks: {
                    owned: "_entry_id"
                }
            }
        }
    });

我也尝试用插入替换更新,但没有用。

我对它可能是什么有几个怀疑:

  • 我没有正确设置 mongodb 权限(最不可能)
  • 我没有正确发布用户集合(我目前根本没有发布它,所以我认为流星会自动执行此操作......但可能还不够?)(有点可能)
  • 插入是正确的命令,但这仅限于服务器,所以我必须将插入函数放在服务器上的 Meteor 方法中,然后从客户端调用该方法?(更倾向于)

或者也许我只是不知道我在说什么(很可能)

4

2 回答 2

3

检查Meteor Update Docs你的语法是错误的。尝试:

var id = Meteor.userId();
 Meteor.users.update( id, {
        $set: {
            profile: {
                userlinks: {
                    owned: "_entry_id"
                }
            }
        }
    });
于 2013-04-16T18:57:45.657 回答
1

您可以这样做,如果您使用自定义帐户 UI,您的用户需要有一个配置文件字段以开始,请确保在您验证用户时将配置文件设置为某些内容,即使它只是一个空白对象开始:

var options = {
    username: 'some_user',
    password: 'password',
    email: 'email@domain.com',
    profile: {}
}

Accounts.createUser(options, function(err){
    if(err){
        //do error handling
    }
    else
        //success
});

如果你删除了不安全的包,你需要确保你设置了 Meteor.users.allow

就像是:

Meteor.users.allow({
    update: function(userId, doc, fieldNames, modifier){
        if(userId === doc._id && fieldNames.count === 1 && fieldNames[0] === 'profile')
            return true;
    }
})

这样用户只能更新自己,他们只能更新个人资料字段。

于 2013-04-16T16:18:05.843 回答