Express-GraphQL 上的多个过滤器
Posted
技术标签:
【中文标题】Express-GraphQL 上的多个过滤器【英文标题】:Multiple Filters On Express-GraphQL 【发布时间】:2017-04-12 21:06:00 【问题描述】:我在我的应用程序中使用 express-graphql 和 node-fetch。我正在尝试将 graphql 与我的 api 调用一起使用来获取数据。目前我正在做
const QueryType = new GraphQLObjectType(
name: "Query",
fields: () => (
acctsFromRelation:
type: new GraphQLList(AcctType),
args:
id: type: GraphQLString,
status: type: GraphQLString
,
resolve: (root, args) => getOpIds(args)
)
);
AcctType如下
const AcctType = new GraphQLObjectType(
name: "acct",
fields: () => (
id: type: GraphQLString,
name: type: GraphQLString,
clientType: type: GraphQLString,
accountStatus: type: GraphQLString,
args:
status: type: GraphQLString
,
primaryContact: type: contactType,
billingAddress: type: billingType
)
);
我正在尝试做这样的事情:
acctsFromRelation (id: "2")
id
name
accountStatus (status: "active")
primaryContact
firstName
lastName
phone
email
billingAddress
address1
address2
city
state
postalCode
country
我获取所有 id 为 2 且 accountStatus 为 active 的帐户。
GetOpIds如下:
function getOpIds (ids)
return fetch(API CALL THAT GIVES IDS)
.then(res => res.json())
.then(json => json.map((element) => getAccountByUrl(element.id)))
.catch(err => err)
getAccountByUrl 看起来像这样
function getAccountByUrl (ids)
return fetch(URL THAT LOOKS UP 1 ID at a TIME)
.then(res => res.json())
.then(json => json)
.catch(err => err)
【问题讨论】:
【参考方案1】:你可以直接从代码中试试这个
const query = `query AcctsFromRelation($id: ID, $status: String)acctsFromRelation(id: $id, status: $status)`;
const variables = id: id, status: status ;
return new Promise((resolve, reject) =>
request("/graphql", query, variables).then(data =>
resolve(data.acctsFromRelation);
);
);
【讨论】:
以上是关于Express-GraphQL 上的多个过滤器的主要内容,如果未能解决你的问题,请参考以下文章