代码之家  ›  专栏  ›  技术社区  ›  Code Reactor

如何使用承诺。neo4j的all-in-graphql解析器?

  •  0
  • Code Reactor  · 技术社区  · 7 年前

    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。我试图查看neo4j中的承诺是如何工作的,但没有找到任何想要的信息。 那么,你能让我知道我应该如何写我的解决这个案件?任何帮助都是值得感激的!!

    1 回复  |  直到 7 年前
        1
  •  0
  •   stdob--    7 年前

    使用承诺。neo4j中的一切都没有什么不同。许诺所有内容都来自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
    }