如何使用JoinMonster连接GraphQL中的数据库结果?

时间:2018-02-15 19:50:29

标签: graphql

我在项目中使用join-monster,但是有一个问题我到目前为止还无法弄清楚它的原因。我有27个具有相同结构的数据库。我需要在所有这些中运行查询,并在一个响应中连接所有结果。我的resolve属性是这样的:

  resolve: (parent, args, context, resolveInfo) => {
    return joinMonster(resolveInfo, {}, sql => {
      const pending = Object.keys(databases).map(async (key) => {
        let conn = await databases[key]()
        conn.query = promisify(conn.query)

        return conn.query(sql).then(result => {
          conn.detach()
          return result
        })
      })

      return Promise.all(pending)
        .then(values => [].concat.apply([], values))
        .catch(error => { throw error })
    })

databases是一个对象,每个键代表一个数据库连接。如您所见,我正在所有数据库中执行相同的查询。所有结果都很好地返回。但是当我执行GraphQL查询时,会返回以下结果:

{
  "data": {
    "offices": [
      {
        "id": "21300380",
        "name": "Portela Lima e Colen Advogados",
        "address": null,
        "city": null,
        "state": null,
        "clients": [
          {
            "clientcode": "COLIN301",
            "email": "controladoria@plcadvogados.com.br"
          }
        ]
      }
    ]
  }
}

在我的数据库中,办公室21300380至少有300个客户端,但在GraphQL响应中,正在返回单个客户端。我在这里做错了什么?

0 个答案:

没有答案