14

モジュール accounts-ui を使用して、流星ボイラープレートに基づく最小アプリを開始しました。

ユーザーを呼び出す作成されたコレクションがあり、その要素の 1 つは profile です。これには、ログイン名を取得する「name」という要素があります。

このテスト アプリには、ユーザー プロファイルを更新するオプションがあります。更新のデータは、フォーム送信から取得されます。ここにイベントリスナーを添付しました

Template.profile.events({
  'submit form': function(event) {
    event.preventDefault();
    var data = SimpleForm.processForm(event.target);
    Meteor.users.update(Meteor.userId(), {$set: {profile: data}});
  }
});

したがって、データにはフォームのすべてが含まれています。ログイン名「名前」はフォームに含まれていないため、データにも含まれていません。

更新前には users.profile.name があります -> 更新後は users.profile.* があります -> * はフォームのすべてと同じですが、「名前」はありません。

最後に: profile.name フィールドを保持できるのは誰ですか? 最後に、from PLUS からのすべてを users.profile に入れたいと思います。

ヒントをありがとう、私は流星に慣れていないので、物事がどのように結びついているかを理解しようとしています。

マイケル

4

2 に答える 2

29

次のように、変更したい部分を更新しながら、古いプロファイル データを簡単に保持できます。

Meteor.users.update(id, {$set: {"profile.someNewField": newData}});

「profile.someNewField」が引用符で囲まれていることを確認してください。

于 2015-07-22T23:48:22.507 に答える
19

既存のプロファイル オブジェクト全体をデータ オブジェクトに置き換えるので、名前キーを含め、以前にあったものはすべて消去されます。

保持したいプロファイルの名前が唯一のものである場合は、独自のキーを使用してデータ オブジェクトに追加するだけです。そうすれば、プロファイルの下に配置する新しいオブジェクトには、古いオブジェクトと同等の名前フィールドがあります。

var data = SimpleForm.processForm(event.target);
data.name = Meteor.user().profile.name;
Meteor.users.update(Meteor.userId(), {$set: {profile: data}});
于 2015-03-12T16:03:30.340 に答える