私は比較的簡単な問題があるはずです。セッションを設定してから、セッションに格納されている文字列を使用してコレクションを購読します。しかし、そのセッションが変更されたら、私はサブスクリプションデータをクリアしてから再開する必要があります。次のように流星定期購読は停止していません
私のコードは次のとおりです。
let subscriptionReady;
let filteredResults = [];
let rawResults = [];
let county = Session.get('county');
let type = Session.get('type');
これは主に、後に投入するためにいくつかの空のオブジェクトを作成するだけの準備作業です。これはすべてクリックイベントに設定されます。我々はこれらのプレースホルダーオブジェクトを設定した後、我々は行くとこれらのセッションで購読:
if (county && !type) {
return function() {
if (subscriptionReady) {
subscriptionReady.stop();
}
filteredResults = [];
rawResults = [];
subscriptionReady = Meteor.subscribe('resourcesearch', county, {
onReady:() => {
rawResults = resourceCollection.find({}, { sort: {score: -1} }).fetch();
rawResults.forEach((result) => {
if (result.score) {
filteredResults.push(result);
}
});
}
});
}
を私はsubscriptionReady
が存在する場合は、チェックを確認するために実行する三行目では、それが利用可能stop
メソッドを持つことになります。だから私はそれを実行します。しかし、実際に何かを止めるわけではありません。
私には何が欠けていますか?
メソッドを使用して適切なデータを取得するのではなく、そのすべての問題をなぜ解決しますか? – tomsp
これは実際には素晴らしい提案です。おそらく、私は長い間、長い間、流星で働いていなかったからでしょう。 – thatgibbyguy
実際、このコメントの本当のMVCです。私の答えは正しいですが、あなたの提案は良いです。ありがとうございました! – thatgibbyguy