Javascript Meteor.publish回调未被调用

Javascript Meteor.publish回调未被调用,javascript,meteor,Javascript,Meteor,我有一个非常简单的项目,只有一个Meteor.publish调用: Boxes = new Meteor.Collection("boxes"); if (Meteor.isServer) { Meteor.startup(function () { Boxes.remove({}) //clearing the database Boxes.insert({ //adding one element to the database boxes: [1],

我有一个非常简单的项目,只有一个Meteor.publish调用:

Boxes = new Meteor.Collection("boxes");

if (Meteor.isServer) {
  Meteor.startup(function () {
    Boxes.remove({}) //clearing the database
    Boxes.insert({ //adding one element to the database
      boxes: [1],
      currentId: 1
    });
  });
  console.log("publish1")
  Meteor.publish("boxes", function() {
    console.log("publish2") //this does not run! ever!
    return Boxes.find();
  });
}
出于某种原因,我的Meteor.subscribe似乎无法工作(集合总是返回空的),因此我在代码中放置了几个console.log。出于某种原因,我的服务器代码会打印“publish1”,但不会打印“publish2”,而如果我在一个示例项目中尝试相同的方法,它会同时打印这两种代码


注意:我删除了autopublish软件包。

在路径(
your_project/server/
)中创建一个单独的JavaScript文件,名为
publish.js
,并将发布功能放在该文件中

Meteor.publish("boxes", function() {
  console.log("publish2") //this does not run! ever!
  return Boxes.find();
});
然后在客户端相应的JS文件中订阅此发布,如下所示:

Meteor.subscribe('boxes');

你需要在客户端订阅它。这是我的工作:

Boxes = new Meteor.Collection("boxes");

if (Meteor.isServer) {
 Meteor.startup(function () {
  Boxes.remove({}) //clearing the database
  Boxes.insert({ //adding one element to the database
    boxes: [1],
    currentId: 1
  });
});
console.log("publish1")
Meteor.publish("boxes", function() {
    console.log("publish2") //this does not run! ever!
    return Boxes.find();
  });
}

if(Meteor.isClient){

  Meteor.subscribe('boxes');

}

只有在浏览器中打开应用程序时,才会打印
publish2

如果它仍然引发对“框”的权限或访问的异常,则您必须在
您的项目/shared/collections.js中添加以下代码<代码>盒子=新流星系列(“盒子”);allow({insert:function(){return true;},update:function(){return true;},remove:function(){return true;}})如果需要,请查看我之前的类似内容。是的,只有当用户实际请求数据时才调用发布回调是有意义的。我的问题与此无关