我正在使用模板助手,它返回特定游标与来自另一个游标的文档的每次迭代之间的比较。 'inside'值存储在'City'集合中。
我知道在'Places'集合中的每个文档上存储一个独特的'inside'值可以解决这个问题,但是你只能在每个'City'中的一个地方“内部”,这将是一个表现问题。
助手:
Template.listPlaces.helpers({
places: function () {
return Places.find({});
},
insidePlace: function () {
return City.findOne({_id: this._id}).inside === places._id;
}
]);
模板:
<ul>
{{#each places}}
{{#if insidePlace}}Active{{else}}Inactive{{/if}}
{{/each}}
</ul>
我知道一个解决方案是运行游标观察器,每次City.inside更新时都会使用'inside'值更新Session变量,但我想知道是否有更好的解决方案。
答案 0 :(得分:1)
您是否考虑过使用transform?
Template.listPlaces.helpers({
places: function () {
var transform = function(doc) {
var city = Cities.findOne({_id: doc._id});
doc.insidePlace = (city.inside == doc._id)
return doc;
}
return Places.find({}, {transform: transform});
},
]);