Слияние коллекций в Метеоре
Представьте, что у вас есть несколько коллекций, которые вы хотите отобразить в одной социальной новостной ленте, напримерPosts
а такжеUsers
(новые регистрации). Как бы вы отобразили оба в списке, отсортированном по дате создания?
Вы публикуете сущности отдельно, а в клиенте сортируете каждую из них по дате и объединяете их в один отсортированный массив, который затем отображается в{{#each}}
итератор.Проблема: AFAIK это требует, чтобы реактивные курсоры были сведены в статические массивы, поэтому теперь страница не будет обновляться. (Возможно, есть способ заставить страницу пересчитать этот массив при изменении какой-либо коллекции, прибегая к такому подходу?)
Вы создаете новую коллекцию, скажемFeedItems
, Когда новыйPost
или жеUser
создан, вы также создаете новыйFeedItem
и скопируйте в него соответствующую информацию. Отображение элементов в клиенте теперь очень просто.Проблема: Теперь нет никакой реактивности между каноническими объектами иFeedItem
их версии, поэтому, если кто-то изменит свое имя, удалит сообщение и т. д., это не будет отражено в ленте. (Возможно, есть способ создать реактивность между коллекциями, чтобы спасти этот подход?)
Возможно, есть какой-то способ придерживаться существующих коллекций, но создание дополнительного'newsFeed'
публикация, которая каким-то образом объединит их. Однако я не видел никакого способа сделать это. В документации я вижу, что вы можете публиковать массив коллекций, но AFAIK это эквивалентно публикации одних и тех же коллекций по одному.
Один из этих подходов на правильном пути? Или есть другой, о котором я не думал?