如何在graphi解析器中为neo4j使用Promise.all?

时间:2017-09-20 19:12:56

标签: neo4j apollo-server

我有多个用户节点(大约45个用户),我想在一个查询中返回总用户数以及用户的详细信息。 (类似于How to design the following resolver for GraphQL server?

我的架构:

type User {
    ID: Int
    name: String
}

type Query {
  users: [User]
}

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

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

但我很困惑如何在neo4j中使用Promise.all。我试着看看诺言如何在neo4j中起作用,但我找不到任何想要的信息。 那么,请你告诉我如何为这个案子编写我的解析器?任何帮助都会很明显!!

1 个答案:

答案 0 :(得分:0)

在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
}