【发布时间】:2017-09-11 01:22:39
【问题描述】:
所以我尝试做的是,使用 GraphQL 从数据库(在我的情况下为 MongoDB)中检索过滤数据。
讲“MySQL语言”如何在GraphQL中实现where子句?
我按照本教程进行操作: https://learngraphql.com/basics/using-a-real-data-source/5
带过滤器的查询是这样定义的:
const Query = new GraphQLObjectType({
name: "Queries",
fields: {
authors: {
type: new GraphQLList(Author),
resolve: function(rootValue, args, info) {
let fields = {};
let fieldASTs = info.fieldASTs;
fieldASTs[0].selectionSet.selections.map(function(selection) {
fields[selection.name.value] = 1;
});
return db.authors.find({}, fields).toArray();
}
}
}
});
这里的棘手部分是resolve 函数中的info 参数。我在这里找到了一些解释:http://pcarion.com/2015/09/26/graphql-resolve/
所以它是AST(抽象语法树)
任何人都可以提供一些基本的真实示例代码来展示如何定义和执行以下查询: 获取 name == John 的所有作者
谢谢!
【问题讨论】:
标签: graphql