Simple Meteor (1.7.0.5) публиковать / подписаться на коллекцию не работает - PullRequest
0 голосов
/ 26 августа 2018

У меня есть коллекция в Mongo, содержащая 2 элемента, я вижу их, когда включена автопубликация.Но когда я отключаю автопубликацию и добавляю код публикации и подписки, он больше не работает.

Это первый раз, когда я использую Meteor версии 1.7.0.5, до того, как я всегда использовал 1.6, и у меня никогда не былолюбая проблема с публикацией / подпиской ...

Это такой простой тест, но что я делаю не так?У меня есть следующий код и файлы:

/ client / xxx / xxx.html

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

/ collection / _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 голосов
/ 26 августа 2018

Если вы хотите, чтобы ваш проект работал так же, как в Meteor 1.6, вам необходимо удалить свойство mainModule из вашего package.json .

Объяснение

Начиная с Meteor 1.7 , в новых проектах отложенная загрузка по умолчанию включена даже вне папки import /.

Это делается с помощью свойства mainModule внутри файла package.json:

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

Если вы хотите использовать энергичную загрузку (отключите отложенную загрузку) вам необходимо удалить свойство mainModule из вашего package.json .

В вашем случае проблема не в автопубликации, а в включенной отложенной загрузке.


Больше ресурсов здесь:

...