Как достать детей Метеора публиковатьКомпозит - PullRequest
0 голосов
/ 04 марта 2020

Я застрял в публикации Метеора Композит. Я не понимаю, как правильно определить дочерние коллекции, определенные в publishComposite.

Предположим, у меня есть такие интерфейсы

interface IInterview {
  _id: string,
  candidateId: string,
  comments: IInterviewComments[]
}

interface IInterviewComment {
  userId: string,
  text: string
}

interface IUser {
  _id: string,
  name: string
}

Итак, с данными некоторых интервью мне также нужны имена авторов комментариев

Я написал что-то вроде этого

publishComposite('interviews.item', function(interviewId) {
  return {
    find() {
      return InterviewCollection.find({_id: interviewId});
    },
    children: [
      find(interview) {
        const authorsIds = interview.comments.map((comment) => comment.userId);

        return UsersCollection.find({_id: {$in: authorsIds}});   
      }
    ]
  }
});

Итак, как мне узнать имя автора комментария на клиенте? Могу ли я просто выполнить UsersCollection.findOne({_id: commentUserId}) или мне нужно использовать какой-нибудь помощник по сбору?

1 Ответ

0 голосов
/ 04 марта 2020

publishComposite только публикует все соответствующие данные для клиента в соответствии с их соответствующими коллекциями. Вы можете получить к нему доступ, как обычно, или абстрагировать его, как считаете нужным. Существуют разные методы, которые вы можете использовать для абстракции. Вы можете посмотреть специальные пакеты c: jagi:astronomy, dburles:collection-helpers или socialize:base-model.

. расположены в свойстве comments, и для каждого из этих комментариев указывается автор комментария, тогда я рекомендую просмотреть cultofcoders:grapher

...