使用_id参数不成功发布/订阅记录

时间:2013-08-21 22:48:55

标签: meteor publish-subscribe

我正在使用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

请让我知道如何解决这个问题。谢谢

2 个答案:

答案 0 :(得分:2)

代码:

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

Deps.autorun(function(){
    Meteor.subscribe("currentBook", Session.get("currentBook").id);
});
  • 发布和订阅频道必须具有相同的名称。
  • 您已将_id包装在订阅频道中的对象中,但未在发布中将其解压缩。这种包装不是必需的。
  • 如果您使用可以更改的参数(例如会话变量),则应将subscribe调用Deps.autorun

答案 1 :(得分:0)

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

要将数据装箱到数组中,请在使用控制台时使用.find().fetch()