利用关系记录丰富Feathers服务的设计模式

问题描述 投票:0回答:1

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

如果我直接在续集中这样做,我会做类似的事情:

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

从feathers指南看来,我似乎可以将此逻辑挂在钩子上(在标准查询之后?),然后用此查询的结果替换收集的数据(并使数据库调用的次数增加一倍)。或者,我可以只查询以当前siteId作为其parentId的位置(再次使数据库调用次数增加一倍)。

但是,我想知道是否在羽毛中内置了更整洁的方法,以确保每次进行标准的GET调用时都包括其子元素。

typescript feathersjs feathers-sequelize feathers-hook
1个回答
0
投票

[这是通过params.sequelize完成的,并在this FAQfeathers-sequelize documentation中有更详细的说明,该文件显示为使用服务器上的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;
}
© www.soinside.com 2019 - 2024. All rights reserved.