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

У меня есть коллекция в 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.info("xxxHelper is called");
        var r = XxxCollection.find();
        console.info(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"
   }
}
Я скопировал ваш код, и он работает нормально. Вы можете показать нам свой файл package.json? Потому что, начиная с Meteor 1.7, есть разница в том, как загружается код.
Gaëtan Rouziès 26.08.2018 13:50

спасибо за помощь, мой файл 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" } }

TomTem 26.08.2018 13:59

@TomTem, пожалуйста, отредактируйте свой вопрос и добавьте туда записи package.js вместо того, чтобы помещать их в комментарий. Комментарии обычно нужны для разговора, в то время как область вопросов предоставляет гораздо лучшие возможности для форматирования и отображения фрагментов кода, чем комментарии.

Jankapunkt 26.08.2018 15:52
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
3
130
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

Объяснение:

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

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

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

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

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


Дополнительные ресурсы здесь:

О боже, вот и все, спасибо! Я удалил весь раздел "метеор": {...}, и теперь он работает.

TomTem 26.08.2018 14:37

Другие вопросы по теме