我的集合中有一些带有标签的对象:
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
throughMeteor.Collection.update
- 连接函数中的特定代码
Meteor.Collection.allow
,但它会在每次更新Obj
(性能命中)时运行,并且allow
看起来并不真的是此类代码的正确位置