0

我正在尝试创建一个具有数据一对多关系的简单应用程序。一个站点包含许多位置。我正在使用羽毛 js 和续集(使用 sqlite)。羽毛中的标准GET功能将返回一个站点或站点列表。但是,我看不出您“也应该”如何返回子记录。

如果我直接在 sequelize 中执行此操作,我会执行以下操作:

    db.Site.findAll({
        include: [db.Location]
    }).then(function (sites) {
        res.status(200).json({
            data: sites
        });
    }).catch(err => res.status(500).send({ error: err }));

从羽毛指南看来,我似乎可以将这个逻辑放在一个钩子中(在标准查询之后?),并用这个查询的结果替换收集的数据(并将数据库调用次数加倍)。或者我可以只查询当前位置的位置siteIdparentId再次将数据库调用次数加倍)。

但是,我想知道羽毛中是否有一种更简洁的方法,以确保每次进行标准GET调用时,都包含它的子元素。

4

1 回答 1

0

这是通过此常见问题解答feathers-sequelize 文档params.sequelize完成并更详细地记录的,该文档显示在服务器上使用钩子,如下所示:before

// GET /my-service?name=John&include=1
function (context) {
  const { include, ...query };

   if (include) {
      const AssociatedModel = context.app.service('fooservice').Model;
      context.params.sequelize = {
         include: [{ model: AssociatedModel }]
      };
      // Update the query to not include `include`
      context.params.query = query;
   }

   return context;
}
于 2019-09-25T21:02:56.827 回答