0

特定のカーソルと別のカーソルからのドキュメントのすべての反復との比較を返すテンプレート ヘルパーを使用しています。「内側」の値は、「都市」コレクション内に格納されます。

「Places」コレクション内の各ドキュメントに一意の「inside」値を格納すると、この問題が解決することはわかっていますが、各「City」内の 1 つの場所にしか「inside」することはできません。これはパフォーマンスの問題になります。

ヘルパー:

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 が更新されるたびにセッション変数を「内部」値で更新するカーソルオブザーバーを実行することで解決できることはわかっていますが、より良い解決策があるかどうか知りたいです。

4

1 に答える 1

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