Коллекция Метеор пуста в шаблоне - PullRequest
0 голосов
/ 26 июня 2018

Я на начальной стадии проекта Meteor, в котором присутствуют все пакеты по умолчанию, включая автопубликацию.Добавление коллекции Notes в мой проект работало нормально и отображалось, как и ожидалось.

Когда я добавил вторую коллекцию.Tags, повторяя один и тот же шаблон, он всегда пуст.

Поэтому мне нужны некоторые указатели, на которые следует обратить внимание.Я прочитал, например, Список распространенных ошибок Дэвида Уэлдона , но не нашел там подсказки.

Есть два шаблона, отображающие две Коллекции, одна отображается нормально, а другая нет.

Коллекции объявлены точно так же:

export const Tags = new Mongo.Collection('Tags');
export const Notes = new Mongo.Collection('Notes');

Они отображаются с помощью похожих, простых шаблонов, на которые есть ссылки в моем html:

<body>
  <div>
    {{#each tags}}
      {{> tag}}
    {{/each}}
  </div>
  <div>
    {{#each notes}}
      {{> note}}
    {{/each}}
  </div>
</body>

И помощники шаблоновтакже идентичны:

Template.body.helpers({
  notes() {
    return Notes.find({}, { sort: { createdAt: -1}});
  },
  tags() {
    let t = Tags.find({});
    return t;
  },
});

Если я ломаю после let t =..., то t.fetch() дает пустой массив.(meteor mongo: db.Tags.find() - это , а не пусто ...)

Возвращение массива из tags() -помощи корректно отображает эти данные, поэтому я, очевидно, что-то упускаю из Tags-коллекция.

Может быть, это из-за времени?Я думал, что помощники реагируют и как таковые должны заботиться о таких вещах.Или мне нужно просмотреть явные подписки, iron:router и waitOn?

FIX:

Как указано @Jankapunkt, я забыл добавитьсбор на запуск на стороне сервера.

1 Ответ

0 голосов
/ 26 июня 2018

Для успешной автоматической публикации данных вашей коллекции монго на ваших клиентах вам необходимо импортировать коллекцию как на сервер, так и на клиента (желательно при запуске).

Пример

import / MyCollection.js

export const MyCollection = new Mongo.Collection('mycollection');

server / main.js

import { MyCollection } from '../imports/MyCollection';

client / main.js

import { MyCollection } from '../imports/MyCollection';

Если вы удалите пакет autopublish, вам необходимо будет добавить публикации на стороне сервера и подписки на стороне клиента.

Дополнительные сведения:

https://guide.meteor.com/data-loading.html

https://guide.meteor.com/collections.html

...