Запрос mongodb в meteor "каждый контекст" вложен

Пример:

<template name="list_customers">
  <p><h3>List Customers</h3></p>
  {{#each customers}}
    {{> list_customers_content}}
  {{/each}}
</template>

<template name="list_customers_content">
..display all customer data from "Customers.find({})...

{{> list_customers_content_ip}}

</template>

<template name="list_customers_content_ip">
.. display data from Customers_ip.find({}) based on #each customer object id.
</template>

Template.list_customers.helpers({
  customers() {
    return Customers.find({});
  },
});

Как это можно сделать за минимальное количество запросов к двум разным коллекциям и есть ли способ использовать идентификатор объекта контекста клиентов? Напишите, пожалуйста, полный пример.

Как должен выглядеть помощник для Customers_ip.find()?

0
0
27
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вам необходимо передать текущий документ (который является this внутри контекста #each) в шаблон list_customers_content для дальнейшей его обработки.

Имя параметра будет именем для доступа к значению в дочернем шаблоне.

Пример:

{
  name: "John Doe",
  _id: "1232131",
}


<template name="list_customers">
  <p><h3>List Customers</h3></p>
  {{#each customers}}
    {{> list_customers_content customer=this}}
  {{/each}}
</template>

<template name="list_customers_content">
  <span>Name: {{customer.name}}</span><!-- John Doe -->
  {{> list_customers_content_ip customerId=customer._id}}
</template>

<template name="list_customers_content_ip">
  {{#each customerIp customerId}}
    <span>IP: {{this.ip}}</span>
  {{/each}}
</template>

Помощник для customerIp может выглядеть так:

Template.list_customers_content_ip.helpers({

  customerIp(customerId) {
    // assumes, that these documents have
    // a field named "customerId"
    return Customers_ip.find({ customerId }); 
  },

});

Спасибо за ответ. Это имеет смысл до последней части. Итак, как мне получить customerId для использования в моем помощнике для запроса БД?

user3323307 11.04.2018 13:49

Для этого необходимо добавить схему того, как выглядят документы в этой коллекции. В противном случае это будет просто догадка.

Jankapunkt 11.04.2018 13:51

Наверное, я чего-то не понимаю. Итак, customerId теперь находится в шаблоне list_customers_content_ip. Но чтобы написать помощника для поиска данных из базы данных, мне нужен customerId в моем помощнике. Но как мне получить доступ к шаблону customerId в моем помощнике, чтобы использовать его в запросе? если в этом есть смысл.

user3323307 11.04.2018 13:58

Другие вопросы по теме