如何在 neo4j 的 graphql 解析器中使用 Promise.all?

How to use Promise.all in graphql resolver for neo4j?

我有多个用户节点(大约 45 个用户),我想 return 用户总数以及用户的详细信息也在单个查询中。 (类似于

我的架构:

type User {
    ID: Int
    name: String
}

type Query {
  users: [User]
}

在 运行 users 查询的解析器之后,我想提取总计数以及用户详细信息,如下所示:

    {
      "data": {
        "users": {
          "total": 45
          "users": [
            {
              "ID": 1,
              "name": "User A"
            },
            {
              "ID": 2,
              "name": "User B"
            },
            ...
          ]
        }

但是我很困惑如何在neo4j中使用Promise.all。我试图查看 promise 在 neo4j 中的工作原理,但没有找到任何需要的信息。 那么,您能否让我知道我应该如何为这种情况编写解析器?任何帮助将不胜感激!!

在 neo4j 中使用 Promise.all 没有什么不同。 Promise.all 来自 javascript。要编写解析器,您可以执行以下操作:

let countQuery = "MATCH(n:User) RETURN count(n) as count;";
let userQuery = "MATCH(u:User) RETURN u;";
return Promise.all([
  dbSession().run(countQuery, params),
  dbSession().run(userQuery, params)
]).then((data) => {
  return {
    total: data[0].records.map(record => {return record.get('count')}
    users: data[1].records.map(record => {return record.get('u')}
  }
})

在您的架构类型中,您可以将其更改为以下内容:

type User {
    ID: Int
    name: String
}
type PagedData {
   total: Int,
   users: [User]
}
type Query {
  users: PagedData
}