为什么这个系列是空的? (Collection.find()成功服务器)

时间:2015-05-27 13:29:29

标签: meteor

好的,这就是我所拥有的。 名为Posts的集合具有内容,我想以Merchs的名称发布它,发布函数中的find()查找数据,但不会向Merchs始终为空的客户端共享。

//共享

Merchs = new Meteor.Collection('merchs');
// Posts has data I want to publish as "Merchs"
this.Posts = new Meteor.Collection('posts');

// server

Merchs.allow({
  insert: function(userId, doc) {
    return true;
  },
  update: function(userId, doc, fields, modifier) {
    return true;
  },
  remove: function(userId, doc) {
    return true;
  }
});

Meteor.publish('merchs', function(data) {
    return Posts.find();
});

//客户端

Deps.autorun( function() {
    Session.get('selectedCategories');
    subs.subscribe('merchs');
});

1 个答案:

答案 0 :(得分:1)

创建集合时,括号中的名称应为Mongo集合的名称。

UIKeyboardWillShowNotification
UIKeyboardDidHideNotification

应该是:

Merchs = new Meteor.Collection('merchs');

也就是说,除非你已经在代码中定义了一个你没有显示的Posts变量。如果您已经定义了帖子,并且您只是想要再次订阅同一个系列,那么您根本不需要这一行:

Merchs = new Mongo.Collection('Posts');

您也不需要您的allow()方法(您可以使用为帖子定义的方法)。您所需要的只是您定义的publish()方法。

在客户端,您还需要:

Merchs = new Meteor.Collection('merchs');

另请注意使用Mongo.Collection而不是在Meteor 0.9.1中重命名的Meteor.Collection。

您可能希望阅读有关发布/订阅的优秀答案:https://stackoverflow.com/a/21853298/4665459