Meteor - Helper比较两种不同的游标

时间:2014-05-25 15:48:30

标签: meteor meteor-blaze meteor-helper

我正在使用模板助手,它返回特定游标与来自另一个游标的文档的每次迭代之间的比较。 '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变量,但我想知道是否有更好的解决方案。

1 个答案:

答案 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});
    },
]);