1

Meteor の最新バージョンでは、変換機能が追加されました。

使用例:

var myCollection = new Meteor.Collection("mycollection",
{
    transform: function(doc){ 
        doc["newProperty"] = "test"; return doc; 
    })
}

これらの変換を再計算させる方法はありますか?

私は DOM で time humanize 関数 (MomentJS humanize) を使用していますが、これは文字通りコレクションに対して行われる唯一の変換であるため、10 秒ごとに 1 回 (約 15 エントリ) 再適用する必要はありません。パフォーマンスヒット。

4

1 に答える 1

1

1つの方法は、コレクションの結果を依存関係に置くことです。

クライアントJS:

var times = [];
var timesDeps = new Deps.Dependency;

var getTimes = function () {
   Deps.depend(timesDeps);
   return myCollection.find();  //Your Query
};


Template.home.times = function() {
    return getTimes();
}

Meteor.setInterval(function() {
    timesDeps.changed();
}, 10000) //Recalculate ever 10000 ms

つまり、実行されているのは、コレクションがgetTimes()で呼び出されていることです。このコレクションを呼び出すとtimesDeps.changed()、リアクティブコンテキストが無効になり、データが更新されるため、transformが再度呼び出されます。

于 2013-03-21T12:55:18.170 に答える