Meteor:订阅不起作用

时间:2013-12-11 17:09:13

标签: meteor

我正在尝试从服务器获取文档并将其显示在客户端上,但订阅始终返回没有文档的集合。

// server/publications.js
Meteor.publish('myPages', function() {
    return Pages.findOne({userId: this.userId});
});

// collection/pages.js
MyPages = new Meteor.Collection('myPages');

// client/main.js
Meteor.subscribe('myPages');

// client/view.js
Template.myView.helpers({
    myPages: function(e, t) {
        console.debug(MyPages.find({}));
        return MyPages.find({});
    }
});

2 个答案:

答案 0 :(得分:1)

我认为您不能使用findOne来发布集合:它不会返回游标而是返回实际对象。

这不起作用吗?

Meteor.publish('myPages', function() {
    return Pages.find({userId: this.userId});
});

或者,如有必要:

Meteor.publish('myPages', function() {
    return Pages.find({userId: this.userId}, {limit: 1});
});

答案 1 :(得分:1)

您无法通过订阅在集合之间移动文档。如果您订阅了Pages集合中的文档,定义为new Meteor.Collection("pages"),那么无论您的pubsub频道如何,在客户端上的文档都将在定义为{{1 }}。因此,请删除new Meteor.Collection("pages")的所有痕迹,并在客户端上使用MyPages。你会在那里找到那份文件。