コレクションを除いて、hereの輪郭を描いたパターンで、「テンプレートヘルパーでMeteorメソッドの戻り値を使用する」の手順を実行しようとしています。流星法の結果としてcollection.findを使用するにはどうすればよいですか?
基本的に、私はこの進行中のようなものを持っている:
(サーバ側)
Meteor.methods({
queryTest: function(selector) {
console.log("In server meteor method...");
return MyCollection.find(selector);
}
});
(クライアント側)
Meteor.call('queryTest', {}, function(error, results) {
console.log("in queryTest client callback...");
queryResult = [];
results.forEach(function(result) {
// massage it into something more useful for display
// and append it to queryResult...
});
Session.set("query-result", queryResult);
});
Template.query_test_template.helpers({
query_test_result: function() {
return Session.get("query-result");
}
});
問題は、私のコールバックです(メテオから.call)は呼び出されません。
私はメソッドを 'return "foo"'に置き換えると、コールバックが呼び出されます。また、 ".fetch()"を検索に追加すると、それも表示されます(ただし、反応がなくなり、他のすべてが壊れる)。
何がありますか?コールバックが呼び出されないのはなぜですか?私は本当に近くにちょうどいい命題が必要なように感じます...
私はクライアント側ですべてのクエリを実行していましたが、_ensureIndexや私が知ることのできる全文検索は、基本的にはサーバー側のメソッド呼び出し(クライアント上のミニ・モンゴでは使用できません)を介してのみ使用できます。
[OK]をEDIT
、私は物事がパブリッシュ/サブスクライブ移行、および全体的な彼らが作業しているが、私はそれはとてもセッション値はセレクタであることを確認しようとすると、それが正しく動作していません。私が "購読する"の場所の問題かもしれません。
私はパラメータ "セレクタ"(意図はmongoセレクタを渡すことになっています)を持つパブリッシュを持っています。クライアントで
、私は次のようにサブスクライブしている:
Meteor.subscribe('my-collection-query', Session.get("my-collection-query-filter"));
しかし、それはむら振る舞いを持っています。ある記事では、これをTemplates.body.onCreate
に置くことを勧めました。それは動作しますが、何か反応がありません(コンソールでセッション値を変更すると、表示された値は変更されません)。
私は別の記事のアドバイスに従うと、そのコレクションを呼び出すテンプレートの関連するヘルパー機能にサブスクライブ権を置きます。それはうまくいきますが、そのコレクションに複数のテンプレートが呼び出されている場合は、それらを動作させるたびにサブスクリプションを追加する必要があります。
どちらも正しいことではありません。私は「購読している」とは「パイプを敷設して仕事をする」というものだが、それは間違っているかもしれない。
私は文書を読み続けるつもりです。たぶんどこかで、サブスクリプションの範囲が適切に説明されています。
さらなる読書をした後、記号は「公開/購読を使用して自動公開を削除」を指していますが、それは本当に唯一の方法ですか? – user2671688
何を手に入れますか?エラーメッセージはありますか?コールバックの{console.error(error)}(エラー) – Areca
いいえ、コールバックが呼び出されなかった可能性があります。この[若干関連した](http://stackoverflow.com/questions/25149189/returning-cursor-results-causes-stack-size-exceeded-error)の質問では、カーソルはjson-シリアライズ可能なオブジェクトなので、全文検索をサポートしたい場合は、実際に公開することが唯一の方法だと思います。 – user2671688