Оба являются взаимодополняющими. Чтобы полностью понять, как Meteor работает с данными, вы должны забыть, как работает традиционное приложение (т. Е. Запрашивать данные и получать их в статической форме (например, json)).
TL; DR Не забывайте, что метеорит DB везде
Метеор реактивность данных работает следующим образом:
1) Публикация: У вас есть какие-то данные в вашем MongoDB (сервер), который вам хочу быть доступны на клиенте, сказал последние 10 статей более в общей сложности 500. Таким образом, вы будете устанавливать публикации на сервере, как это:
//SERVER
Meteor.publish('lastTen', function() {
return Articles.find({}, {limit: 10, sort: {date: -1}});
});
2) Подписка: Для того, чтобы на самом деле сделать данные доступными на клиенте вы подписаться на публикацию, как это на клиенте:
//CLIENT
Meteor.subscribe('lastTen');
3) Fetch данные о клиенте: данные, которые вы подписались на 2) не отправляются статически клиенту, они вместо этого реплицируются в БД клиентской стороны (в настоящее время MiniMongo). Поэтому для извлечения данных и отображения их пользователю придется запрашивать с этой БД на стороне клиента:
//CLIENT
Articles.find({}, {sort: {date: 1}});
В этом случае нет необходимости ограничивать свой запрос, как у вас есть только 10 записей на клиента. Кроме того, вы можете сортировать в другом порядке, так как это БД, а не статические данные.
Будьте осторожны, по умолчанию autopublish
пакет устанавливается для обеспечения быстрого прототипирования. Он будет публиковать все данные на клиенте, поэтому вам не нужен механизм публикации/подписки, и это может сбивать с толку.