9

おそらく、明らかな何かが欠けているか、ドキュメントに欠けているものがあります。検索しても同様の質問が見つかりませんでした。それを投稿します。

これらの両方

return Items.find({},{sort: {time: -1}, limit: 10});

また

return Items.find({},{sort: {time: -1}).limit(10);

結果meteor cannot observe queries with skip or limit

4

1 に答える 1

16

更新: これはもはや問題です。Meteor 0.5.3 から、skipandlimitオプションを使用してクエリを監視できます。

残念ながら、これは事実です。現在、mimimongo パッケージは、またはオプションobserveを使用したカーソルでの呼び出しをサポートしていません。これには正当な理由はありません。実装されていないだけです。skiplimit

テンプレート ヘルパー内でこのクエリを呼び出す場合は、簡単な回避策があります。

Template.name.items = function () {
  // fetch array of all the items
  var items = Items.find({}, {sort: {time: -1}}).fetch();

  // return only the first 10 items to the template
  return items.slice(0,10);
};

回避策の欠点は効率です。ヘルパーがカーソルを返す (Items.findを呼び出さずに の値を返すだけの場合) 場合fetch、テンプレート システムは、1 つの項目だけが変更された場合や新しい項目が挿入された場合に、テンプレート全体を再計算しないほど十分にスマートです。

一方、ヘルパーを呼び出すと、クエリ結果全体fetchへの依存関係が登録されるため、クエリ内のオブジェクトが変更されるたびに、テンプレート全体が再計算されます。

他に違いはありません。テンプレートは同じものを画面に配置し、再描画する必要がある場合はフォーム要素の内容を保持します。

于 2012-04-14T22:07:04.073 に答える