javascript - 简单 meteor (1.7.0.5) 发布/订阅集合不起作用

标签 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"
   }
}

最佳答案

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

解释:

Meteor 1.7 以来,新项目默认启用延迟加载,甚至在 imports/文件夹之外也是如此。

这是由 package.json 文件中的属性 mainModule 生成的:

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

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

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


更多资源在这里:

关于javascript - 简单 meteor (1.7.0.5) 发布/订阅集合不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52025299/

相关文章:

mongodb - 2016年访问 meteor 制作数据库

azure - 发布没有 webjobs 的 web 应用程序

android - 不同证书的apk

Javascript 变量

javascript - isEqual 函数总是返回 true

javascript - Protractor 中的绑定(bind)选择器捕获整个 div 而不是仅捕获值

JavaScript Azure Function stacktrace 中没有我的代码

javascript - 自动更新提交日期的 timeAgo 值

部署后,Meteor 读取 CSV 文件以填充数据库不起作用

asp.net-mvc - 无法使 Web API 应用程序在 Windows 2008 服务器上工作