0

質問のように、これを行うことはできますか?

ユーザーのリンクの配列を現在のユーザーのプロファイルに挿入したいと思います。クライアント側で次のようなことを試しましたが、うまくいきませんでした:

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

update を insert に置き換えてみましたが、役に立ちませんでした。

私はそれが何であるかについていくつかの疑いがあります:

  • mongodb のアクセス許可を正しく設定していません(可能性は最も低い)
  • ユーザーコレクションを正しく公開していません (私は現在まったく公開していないので、流星はこれを自動的に行うと思います...しかし、おそらく十分ではありませんか?) (やや可能性が高い)
  • Insert は正しいコマンドですが、これはサーバーに制限されているため、サーバー上の 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 に答える