包含和字段过滤器不能一起工作?

Include and fields filter don't work together?

我有 3 个型号 A、B、C

A属于B B属于C

我想查询A,包括B,包括C。但我只想要每个模型的几个字段。 使用这样的过滤器而不指定任何 "fields" 工作正常并带回嵌套模型。

{
  "include": {
    "relation": "modelB",
    "scope": {
      "include": {
        "relation": "modelC"
      }
    }
  }
}

但是一旦我将 "fields" 过滤器 属性 添加到查询的任何级别,该级别的所有包含关系似乎都将被忽略。所以如果我用这个过滤器查询:

{
  "fields": ["modelAField"],
  "include": {
    "relation": "modelB",
    "scope": {
      "include": {
        "relation": "modelC"
      }
    }
  }
}

我只获得带有 modelAField 的 modelA 实例 - 就好像我根本没有要求包含 modelB 一样。如果我在顶层省略 "fields" 并将其添加到 modelB 范围,那么我将获得 modelA 的所有字段,即我要求的 modelB 字段的子集,但不包含 modelC.

我浏览了环回连接器代码,看起来发生的事情是因为我没有在我的 "fields" 数组中包含外键字段,所以初始查询没有带回足够的信息正确编写查询以带回相关对象。

tl:dr

在所有关系中包含外键。

来源:https://github.com/strongloop/loopback/issues/2186 我包括这个,因为我认为很多人在编程时不会去 github 分类或错误问题来找到解决他们问题的方法,而是去 SO。这就是为什么我认为在这里发布这个问题很有用。