好的,这就是我所拥有的。 名为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');
});
答案 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