apostrophe-pieces-widgets 是否被分页?还是我需要手动实施

Is apostrophe-pieces-widgets paged ? or do i need to implement it manualy

我有一个属性,其中每个 属性 都分配给一个代理人, 我想要做的是在 "show" 页面中显示分配给每个代理的属性列表。 我正在考虑在代理页面内使用 apostrophe-pieces-widgets,但我不确定以这种方式使用它是否可行,我需要它被分页。 如果这不是正确的方法,我会被指出正确的方向。

编辑:刚看到你说需要分页的说明,你的意思是分页吗?如果是这样,答案会涉及更多

下面的答案将获得所有加入的 属性 件并将它们传递给代理显示页面

假设当你说 'each property is assigned to an agent' 你的意思是每个 属性 都有一个 joinByOne 字段指向一个代理片,你可以在 beforeShow 方法,并将它们附加到 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 遍历

图中没有分页,最简单的方法就是加一个reverse join。

如果属性有此字段:

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

然后代理商可以用这个来获取将 加入 的属性列表,作为 _properties 字段:

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

图片有分页,视情况而定。如果我们谈论的是每个代理可能有 100 个属性,我会说使用这种技术并有选择地自己在模板级别实现分页。如果每个代理有超过 100 个属性,则可能值得实现您自己的属性查询,在该游标上设置 perPage() 并使用 toCount() 获取计数,然后使用 toArray() 使用 perPage()page() 指定页码。这正是 apostrophe-pieces-pages 实现分页的方式,因此您可以从那里借鉴。

从长远来看,如果可以通过 Apostrophe 中的连接和反向连接的配置来指定分页,那将是更理想的。