Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Meteor 流星助手比较两个不同的光标_Meteor_Meteor Blaze_Meteor Helper - Fatal编程技术网

Meteor 流星助手比较两个不同的光标

Meteor 流星助手比较两个不同的光标,meteor,meteor-blaze,meteor-helper,Meteor,Meteor Blaze,Meteor Helper,我正在使用一个模板助手,它返回一个特定游标和来自另一个游标的文档的每个迭代之间的比较。“inside”值存储在“City”集合中 我知道在“地点”集合中的每个文档上存储唯一的“内部”值可以解决此问题,但您只能在每个“城市”中的一个地方“内部”,这将是一个性能问题 助手: Template.listPlaces.helpers({ places: function () { return Places.find({}); }, insidePlace: function ()

我正在使用一个模板助手,它返回一个特定游标和来自另一个游标的文档的每个迭代之间的比较。“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>
    {{{每个地方} {{{#if insidePlace}活动的{{else}}非活动的{{/if} {{/每个}}

我知道一个解决方案是运行游标观察器,每次City.inside更新时,该观察器都会用“inside”值更新会话变量,但我想知道是否有更好的解决方案。

您考虑过使用游标观察器吗

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