Апостроф-кусочки-виджеты разбиты на страницы? или мне нужно реализовать это вручную - PullRequest
0 голосов
/ 07 ноября 2018

У меня есть часть свойств, где каждое свойство присваивается агенту, то, что я пытаюсь сделать, это показать список свойств, назначенных каждому агенту на его странице «показать». Я думал об использовании апостроф-кусочки-виджеты на странице агента, но я не уверен, что это возможно, если это возможно, мне нужно, чтобы он был разбит на страницы. если это не правильный путь, меня бы указали в правильном направлении.

Ответы [ 2 ]

0 голосов
/ 19 ноября 2018

Без пагинации на картинке проще всего добавить обратное соединение.

Если свойства имеют это поле:

{
  name: '_agents',
  type: 'joinByArray',
  withType: 'agent'
}

Тогда агенты могут получить это свойство, чтобы получить список свойств, которые присоединяют к им, как поле _properties:

{
  name: '_properties',
  type: 'joinByArrayReverse',
  reverseOf: '_agents'
}

С пагинацией на картинке это зависит. Если мы говорим о, возможно, 100 свойствах на агента, я бы сказал, чтобы использовать эту технику и, при желании, реализовать разбиение на страницы самостоятельно на уровне шаблона. Если на одного агента приходится более 100 свойств, может оказаться целесообразным реализовать собственный запрос свойств, задав для этого курсора perPage() и используя toCount() для получения счетчика, а затем повторив запрос с toArray(), используя perPage() и page() для указания номера страницы. Это именно то, что apostrophe-pieces-pages делает для нумерации страниц, поэтому вы можете позаимствовать их там.

В долгосрочной перспективе было бы более идеальным, если бы можно было указать нумерацию страниц в конфигурации для объединений и обратных объединений в Apostrophe.

0 голосов
/ 10 ноября 2018

Редактировать : Просто просматривая заметку о том, что она должна быть разбита на страницы, вы имеете в виду нумерацию страниц? Если так, то ответ будет немного более сложным

Приведенный ниже ответ получит все соединенные части свойств и передаст их на страницу показа агента

Предполагая, что когда вы говорите «каждое свойство назначено агенту», вы имеете в виду, что у каждого свойства есть поле joinByOne, указывающее на часть агента, вы можете получить все связанные документы в методе beforeShow вашего agent-pages модуль и присоедините их к data, чтобы они были доступны в вашем шаблоне (/lib/modules/AGENT-PAGES-MODULE/views/show.html)

в /lib/modules/AGENT-PAGES-MODULE/index.js

`` `

module.exports = {
  ... basic module configuration
  construct: function (self, options) {
    self.beforeShow = function(req, callback) {
      var criteria = { idFIELD_NAME_IN_PROPERTY_SCHEMA: req.data.piece._id }
      var projection = {} // This will get entire matching doc, you should clamp this down
      return self.apos.modules['PROPERTY_MODULE_NAME'].find(req, criteria, projection).toArray(function (err, docs) {
        req.data.relatedDocs = docs
        return callback(null);
      });
    }
  }
};

`` `

Тогда в show.html у вас будет data.relatedDocs для итерации по

...