1

Meteor 0.6.5 を使用しており、特定の _id を持つデータをパブリッシュ/サブスクライブしようとしていますが、成功していないようです。autopublish パッケージは削除されました。以下は私のコードです:

Meteor.publish("currentBook", function(bookId){
    return Books.find({_id: bookId});
});

Meteor.subscribe("pages", {_id: Session.get("currentBook").id});

これは Chrome コンソールからのログ出力で、探しているオブジェクトが含まれていません。

LocalCollection.Cursor
_transform: null
collection: LocalCollection
cursor_pos: 0
db_objects: null
limit: undefined
reactive: true
selector_f: function (doc) { // 562
selector_id: undefined
skip: undefined
sort_f: null
__proto__: Object

これを解決する方法を教えてください。ありがとうございました

4

2 に答える 2

2

コード:

Meteor.publish("currentBook", function(bookId){
    return Books.find(bookId);
});

Deps.autorun(function(){
    Meteor.subscribe("currentBook", Session.get("currentBook").id);
});
  • パブリッシュ チャネルとサブスクライブ チャネルは同じ名前である必要があります。
  • サブスクライブ チャネルでオブジェクトをラップ_idしましたが、パブリッシュで抽出しませんでした。このラッピングは不要です。
  • セッション変数など、変更可能なパラメーターを使用する場合は、subscribe呼び出しをラップする必要があります。Deps.autorun
于 2013-08-21T23:12:52.243 に答える
0

Hubert の答えに加えて、もう 1 つのことは、 using.find()がオブジェクトをまっすぐに返さないことです。これは、あなたが見ている遅延カーソルを返します。

データを配列にボックス化するに.find().fetch()は、コンソールをピアリングするときに使用します。

于 2013-08-22T09:26:32.207 に答える