两个 mongo 集合之间的关系。
我有 2 个集合:条目和标签:
// example Entry
{
"_id": "4ZCBv5ogLStfFxpvp",
"title": "Some other title",
"entryLabels": [
"TFrYvEujpqbMryWEZ",
"rn8Z57NsEYse7nYTo",
"rn8Z57NsEYse73YTo"
],
"author": "TMviRL8otm3ZsddSt",
"createdAt": "2016-01-16T15:21:43.153Z",
"date": "2016-01-16T15:21:43.153Z"
}
// Example Label
{
"_id": "9NCNPGH8F5MWNzjkA",
"color": "#333",
"name": "Grey Label",
"author": "TMviRL8otm3ZsddSt"
}
由于一个条目可能有多个标签,因此我将标签 ID 保留在该 entryLabels 字段中。 我的计划是只保存标签 ID,然后根据它查询 Labels 集合。
如果我只有一个 labelID 就没问题,因为我可以根据该 ID 查询 Labels 集合并返回一个标签。但是我有一个 ID 数组,我必须返回多个标签。
我的尝试是这样的(在模板助手中):
labels: function(event){
var entryLabels = this.entryLabels;
var arr = []
for(i = 0; i < entryLabels.length; i++) {
var label = entryLabels[i];
var theLabel = Labels.find({_id: entryLabels[i]}).fetch();
arr.push(theLabel);
}
return arr;
}
然后,在模板中:
{{#each labels}}
{{name}}
<p>asd</p>
{{/each}}
这会返回“asd”3 次,但我无法访问名称等标签属性
所以,我想我的问题是,如何访问这些属性。 另外..我这样做的方式正确吗?
最佳答案
am I doing this the right way?
我会说不。与几乎任何其他数据库一样,使用 mongo,您可以一次检索多个文档。为什么可以在 for-loop
中一次获取一个
labels: function(event){
var entryLabels = this.entryLabels;
var arr = Labels.find({_id: {$in: entryLabels}}).fetch();
return arr;
}
这也将解决您的“我无法访问名称等标签属性”的问题,因为您的旧 arr
是 array 的 array 文档,而不是您预期的文档数组。
关于javascript - 通过 id 匹配集合项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34829859/