1

私はMeteor.jsに非常に慣れていないため、ドキュメントを理解するのが少し難しいと感じています。

ボタンをクリックするだけで既存のゲームをプロファイルに追加できる非常に単純なアプリから始めます。ゲームは別のMeteor Collectionに保存されています。

Rails ではリレーションシップを作成するだけhas_and_belongs_to_manyですが、Meteor ではそうはいきません。ユーザーのアカウントが作成されたときに空の配列を追加するのが最善の方法だと思いました。その後、「ゲームを追加」ボタンをクリックすると、ゲームのタイトルが users 配列に渡されます。

/server/users.jsファイルにこれがあります:

Accounts.onCreateUser(function(options, user){
    user.games = [];
    return user;
});

Meteor.methods({
    addGame: function(title) {
        Meteor.users.update(Meteor.userId(), { $addToSet: { games: title}});
    }
});

そして、 /client/views/games/games_list.jsファイルのaddGameメソッドを次のように呼び出しています。

Template.gamesList.events({
    'click .add-to-chest-btn': function(e){
        var title = $(e.target).attr('name');
        e.preventDefault();
        Meteor.call('addGame', title, function(title){ console.log(title)});
    }
});

私は正しい軌道に乗っていますか、それともこれを行うためのより良い方法はありますか?

4

1 に答える 1

6

あなたは正しい軌道に乗っていますが、オブジェクトの代わりに配列を宣言してください:

Accounts.onCreateUser(function(options, user){
    user.games = [];
    return user;
});

オブジェクトの代わりに値を直接プッシュし、同じものを複数回$addToSetプッシュした場合に重複を避けるために使用します。gameId

Meteor.methods({
    addGame: function(gameId) {
        Meteor.users.update(Meteor.userId(), { $addToSet: { games: gameId }});
    }
});
于 2013-07-02T19:50:11.790 に答える