タグを持つコレクションにいくつかのオブジェクトがあります。
var Obj = new Meteor.Collection('objects');
Obj.insert({ name: 'object1', tags: [] });
コレクション内のオブジェクト全体で、使用されるすべての一意のタグのコレクションをサーバー上で維持したいと考えています。Obj
タグ ファミリの別のコレクションを使用してこれを行います (および他のコレクション用に複数の個別のタグ リストを維持したいため)。
var TagFamilies = new Meteor.Collection('tagfamilies');
TagFamilies.insert({ name: 'obj', taglist: ['tag1', 'tag2'] });
(例として、'tag1' と 'tag2' が既にタグ ファミリーに追加されていると仮定します)
通常、オブジェクトのタグは次のように更新します。
Obj.update({ name: `object1` }, { $set: { tags: ['tag1', 'tag3'] } });
その後、taglist
を保持する予定['tag1', 'tag2', 'tag3']
です。
taglist
重複せずに新しいタグを追加する最も効率的な方法は何ですか?
私は次のように考えることができます(ただし、さまざまなオプションを歓迎します):
- 特定の を作成します
Meteor.methods
が、タグを追加するか、他の通常の属性を更新するかをクライアント コードで区別する必要がありObj
ます。Meteor.Collection.update
- 関数内の特定のコードをフックしますが、 (パフォーマンス ヒット)
Meteor.Collection.allow
への更新ごとに実行され、そのようなコードの適切な場所とは思えません。Obj
allow