Simple Meteor (1.7.0.5) publish/subscribe 无法收集

Simple Meteor (1.7.0.5) publish/subscribe to collection doesnt work

我在 Mongo 中有一个包含 2 个项目的集合,我在启用自动发布时看到它们。但是当我禁用自动发布,并且当我添加发布和订阅代码时,它就不再起作用了。

这是我第一次使用 Meteor 版本 1.7.0.5,之前我一直使用 1.6,而且我从来没有遇到任何问题 publish/subscribe ...

这是一个如此简单的测试,但我做错了什么?我有以下代码和文件:

/client/xxx/xxx.html

<template name="XxxTemplate">
    {{#each xxxHelper}}
    {{name}}<br>
    {{/each}}
</template>

/collections/_Xxxx.js

import SimpleSchema from 'simpl-schema'

XxxCollection = new Meteor.Collection('XxxCollection');
XxxCollectionSchema = new SimpleSchema({
    name: {
        type: String,
        label: "Name"
    }
});
XxxCollection.attachSchema(XxxCollectionSchema);

/server/mongodb/publish.js

Meteor.publish('XxxCollection', function () {
    return XxxCollection.find();
});

/client/xxx/xxx.js

Template.XxxTemplate.onCreated(function() {
   Meteor.subscribe('XxxCollection');
});

Template.XxxTemplate.helpers({
    xxxHelper: function() {
        console.log("xxxHelper is called");
        var r = XxxCollection.find();
        console.log(r);
        return r;
    }
});

我的 package.json 文件如下所示:

{  
   "name":"TestApp",
   "private":true,
   "scripts":{  
      "start":"meteor run",
      "test":"...",
      "test-app":"...",
      "visualize":"meteor --production --extra-packages bundle-visualizer"
   },
   "dependencies":{  
      "@babel/runtime":"7.0.0-beta.55",
      "meteor-node-stubs":"^0.4.1",
      "simpl-schema":"^1.5.3"
   },
   "meteor":{  
      "mainModule":{  
         "client":"client/main.js",
         "server":"server/main.js"
      },
      "testModule":"tests/main.js"
   }
}

如果您希望您的项目像在 Meteor 1.6 中一样工作,您必须从您的 package.json.[=13= 中删除 mainModule 属性 ]

解释:

Meteor 1.7 开始,新项目 默认启用延迟加载 甚至在 imports/ 文件夹之外。

这是由 package.json 文件中的 属性 mainModule 制作的:

"mainModule": {
  "client": "client/main.js",
  "server": "server/main.js"
},

如果您想使用预先加载(禁用延迟加载)您必须从您的 package.json 中删除 mainModule 属性。

在你的情况下,问题不是来自自动发布,而是来自启用的延迟加载。


这里有更多资源: