如何混合片段和用户选择以恰好有 5 个元素?

How to mix pieces and user selection in order to have exactly 5 elements?

我需要制作一个小部件,让用户 select 一些特色活动。 我可以使用自定义小部件和数组字段来做到这一点。 我的需要是,如果用户 select 少于 5 个项目,我想用最新事件(减去用户 selection)填充缺失的元素。我该怎么做?

查看 apostrophe-widgets 中的 self.load method。您可以在那里使用文档管理器 API 来获取片段信息并在加载时更新小部件。

这是一个小部件 index.js 文件中的一般示例:

  construct: function (self, options) {
    self.load = function(req, widgets, callback) {
      var cursor = self.apos.docs.getManager('piece-name').find(req, {
        // Specify the pieces you want
      }, {
        // Fields you want in MongoDB filter style
      }).sort({
        publishedAt: -1
      });

      cursor.toArray(function(err, pieces) {
        if (err) {
          return callback(err)
        }
        _.each(widgets, function(widget) {
          // Load up the widget here.
        });
        return callback(null);
      });
    }
  }

您需要决定是否要在提出此请求之前或之后检查编辑器包含的号码。