0

我正在使用一个模板助手,它返回特定游标与来自另一个游标的文档的每次迭代之间的比较。'inside' 值存储在 'City' 集合中。

我知道在“Places”集合中的每个文档上存储一个唯一的“内部”值可以解决这个问题,但是你只能在每个“城市”的一个地方“内部”,这将是一个性能问题。

帮手:

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 时,它​​会使用“内部”值更新 Session 变量,但我想知道是否有更好的解决方案。

4

1 回答 1

1

您是否考虑过使用转换

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});
    },
]);
于 2014-05-25T17:35:17.137 回答