2015-05-28 2 views
0

Я видел, как разработчики подписались на данные, опубликованные сервером, и передали опции для изменения возвращаемого курсора. Я также видел разработчиков, которые прямо прямо звонили Collection.find(options) непосредственно из клиентских файлов.Метеор: разница между использованием PubSub и Collection.find (параметры) на клиенте

Есть ли разница между двумя подходами? Если да, то какой рекомендуемый метод?

ответ

0

Оба являются взаимодополняющими. Чтобы полностью понять, как 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 пакет устанавливается для обеспечения быстрого прототипирования. Он будет публиковать все данные на клиенте, поэтому вам не нужен механизм публикации/подписки, и это может сбивать с толку.

Смежные вопросы