我有这个 Graphql 查询
"{TABLE_NAME{
id
severity
des
ip
hostname
description
}
}";
Run Code Online (Sandbox Code Playgroud)
也就是返回1000多条记录,怎么办:
SELECT COUNT(*) FROM TABLE_NAME
Run Code Online (Sandbox Code Playgroud)
在 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
})
Run Code Online (Sandbox Code Playgroud)
然后请求
query Info {
tableInfo(name: "my_table") {
count
}
}
Run Code Online (Sandbox Code Playgroud)
也就是说,这不是一个好的模式,如果您期望查询返回大量结果,则应该使用分页。最佳实践在这里http://graphql.org/learn/pagination/
| 归档时间: |
|
| 查看次数: |
19775 次 |
| 最近记录: |