如何为graphql类型的字段对象添加排序,引用不同的graphql类型?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何为graphql类型的字段对象添加排序,引用不同的graphql类型?相关的知识,希望对你有一定的参考价值。

我正在使用Neo4j dB并使用模式理解来返回值。我有两种类型的人和朋友:(p:人) - [:FRIEND_WITH] - >(f:朋友)

Type Person{
  id: String
  name: String
  friends: [Friend]
}

 Type Friend{
  id: String
  name: String

}   

 type Query {
    persons( limit:Int = 10): [Person]
    friends( limit:Int = 10): [Friend]
  }

我想要做的是在执行“人员”查询时以升序拉出字段朋友的数组列表(存在于“人员类型”中)。对于例如

  {
  "data": {
   "persons": {
     "id": "1",
     "name": "Timothy",
     "friends": [
       {
        "id": "c3ef473",
        "name": "Adam",     
       },
       {
        "id": "ef4e373",
        "name": "Bryan",     
       }, 
       (  
        "id": "e373ln45",
        "name": "Craig",     
       },    

我该怎么办?我研究了排序,但是当我们在neo4j中使用模式理解时,我没有找到关于数组对象排序的任何特定内容。任何建议都会非常有用!

答案

我使用lodash的sortBy函数将结果返回到升序。这是graphql解析器查询:

    persons(_, params) {
       let query = `MATCH (p:Person)
                    RETURN p{
                   .id,
                   .name,
                   friends: [(p)-[:FRIEND_WITH]->(f:Friend)) | f{.*}]
                   }

                   LIMIT $limit;`;

      return dbSession().run(query, params)
     .then(result => {
       return result.records.map(record => {
         let item = record.get("p");
             item.friends = sortBy(item.friends, [function(i) {
             return i.name;
        }]);
          return item;
      })
    })
}

以上是关于如何为graphql类型的字段对象添加排序,引用不同的graphql类型?的主要内容,如果未能解决你的问题,请参考以下文章

使用 Prisma,我们如何为类型添加评论?

如何为 GraphQL 使用数组模式类型

如何为 GraphQL Mutation 字段编写解析器

如何在 Graphql 中返回 JSON 对象并定义 JSON 类型

如何为数据表新增不为空的字段?

在 GraphQL Schema 中定义地图对象的最佳方式?