简单流星(1.7.0.5)发布/订阅收藏集无效

时间:2018-08-26 10:21:21

标签: javascript meteor publish subscribe

我在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"
   }
}

1 个答案:

答案 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属性。

对于您而言,问题不是出自自动发布,而是起因于延迟加载。


更多资源在这里: