Дизайн, чтобы не делать лишних запросов информации - PullRequest
0 голосов
/ 08 апреля 2019

У меня есть вопрос о том, как лучше всего получить пользовательские данные. Я показываю список отзывов. Каждый отзыв имеет идентификатор пользователя рецензента и идентификатор пользователя рецензента. Структура коллекции такова:

{
    "_id": 24235,
    "reviewerId": 11254,
    "revieweeId": 29981,
    "rating": 5,
    "reviewText": "Lorem Ipsum"
}

В шаблоне блэйса должны отображаться аватар и имя рецензента. У меня проблемы с выяснением, как лучше получить эти детали? Должен ли я опубликовать услугу? Я буду показывать список отзывов, чтобы сервис вызывался для каждого пользователя, не правда ли, неэффективно?

<ul class="review-list">
  {{#each reviews}}
    <li>
      <img src="{{reviewerAvatar}}"/>
      <p>{{reviewerName}}</p>
      <p>{{reviewText}}</p>
      <span>{{rating}}</span>
    </li>
  {{/each}}
</ul>

Здесь у меня есть идея, но можно ли улучшить дизайн, чтобы я не делал слишком много ненужных запросов о пользовательских данных?

Template.reviewItem.helpers({
  reviewerAvatar: function() {
    // is it inefficient to make this call for both reviewerAvatar and reviewerName?
    return Meteor.call('users.userDetails', this.reviewerId).avatar;
  },
  reviewerName: function() {
    return Meteor.call('users.userDetails', this.reviewerId).firstName;
  }
});
...