返回Graphql Count

时间:2017-09-27 16:26:22

标签: graphql

我有这个Graphql查询

 "{TABLE_NAME{
    id
    severity
    des
    ip
    hostname
    description

  }
}"; 

返回超过1000条记录.. 我的问题是:我是怎么做的

SELECT COUNT(*) FROM TABLE_NAME
在Graphql中

2 个答案:

答案 0 :(得分:0)

简短的回答是你不要。 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
  }
}

说,这不是一个好的模式,如果你期望一个查询返回大量的结果,你应该改为使用分页。最佳做法是http://graphql.org/learn/pagination/

答案 1 :(得分:0)

您可以轻松使用:

<Route path='#tab1' render={() => <MyComponent store={store}/>}/>