Graphql 返回图形ql计数

Graphql 返回图形ql计数,graphql,Graphql,我有一个Graphql查询 "{TABLE_NAME{ id severity des ip hostname description } }"; 那是1000多张唱片的回报。。 我的问题是:我怎么样 SELECT COUNT(*) FROM TABLE_NAME 在Graphql?中,简单的答案是你没有。GraphQL对象类型不一定要将1:1映射到数据库表,因此不能以这种方式查看它。如果要从表中获取计数,则需要将其作为字段添加到输出

我有一个Graphql查询

 "{TABLE_NAME{
    id
    severity
    des
    ip
    hostname
    description

  }
}"; 
那是1000多张唱片的回报。。 我的问题是:我怎么样

SELECT COUNT(*) FROM TABLE_NAME

在Graphql?

中,简单的答案是你没有。GraphQL对象类型不一定要将1:1映射到数据库表,因此不能以这种方式查看它。如果要从表中获取计数,则需要将其作为字段添加到输出类型或作为其自己的字段。我假设,因为您想在查询一个表之前找出它有多大,所以您需要一个“tableInfo”类型的查询

const TableInfo = new GraphQLObjectType({
  name: 'TableInfo',
  fields: {
    count: GraphQLInt
  }
})
const Query = new GraphQLObjectType({
  name: 'Query',
  fields: {
    tableInfo: {
      type: TableInfo,
      args: {
        name: new GraphQLNonNull(GraphQLString)
      },
      resolve (source, args) {
        return new Promise((resolve, reject) => {
          connection.query(
            'SELECT COUNT(*) from ' + args.name,
            (error, results) => {
              return error ? reject(error) : resolve(results)
            }
          )
        })
      }
    }
  }
})
const schema = new GraphQLSchema({
  query: Query
})
然后请求

query Info {
  tableInfo(name: "my_table") {
    count
  }
}
也就是说,这不是一个好的模式,如果您希望查询返回大量结果,那么应该使用分页。最佳实践如下所示

您可以轻松使用:

query {
    listOfElts (first: 1) { 
        totalCount 
    }
}

虽然此命令可以回答该问题,但提供有关此代码为什么和/或如何回答该问题的其他上下文可以改善其长期性能value@LordWilmore它在我的GitHub-graphql调用中工作得很好,它成功地检索了我拥有的存储库的数量。有时候我们只需要一个简单的答案就足够了。这里似乎没有什么要解释的。