我在Mongo中有一个包含2个项目的集合,启用自动发布后会看到它们。但是,当我禁用自动发布时,以及添加发布和订阅代码时,它将不再起作用。
这是我第一次使用Meteor版本1.7.0.5,在我始终使用1.6之前,我从未遇到过发布/订阅问题...
这是一个简单的测试,但是我做错了什么?我有以下代码和文件:
/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"
}
}
答案 0 :(得分:1)
如果您希望项目像在Meteor 1.6中一样工作,则必须从package.json中删除mainModule属性。
说明:
自 Meteor 1.7 起,新项目默认情况下已延迟加载,即使在import /文件夹之外也是如此。
这是由package.json文件内的mainModule属性完成的:
"mainModule": {
"client": "client/main.js",
"server": "server/main.js"
},
如果要使用紧急加载(禁用延迟加载),则必须从package.json中删除mainModule属性。
。对于您而言,问题不是出自自动发布,而是起因于延迟加载。
更多资源在这里: