1

我正在使用 Meteor 0.6.5,我正在尝试发布/订阅具有特定 _id 的数据,但它似乎并不成功。自动发布包已被删除。下面是我的代码:

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

除了休伯特的回答之外,另一件事是 using.find()不会直接返回对象,它会返回一个惰性光标,这就是您所看到的。

要将数据打包到数组.find().fetch()中,请在使用控制台查看时使用。

于 2013-08-22T09:26:32.207 回答