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 上的多个过滤器的主要内容,如果未能解决你的问题,请参考以下文章

Pyspark:字符串列上的多个过滤器

数据框上的多个条件过滤器

用于过滤的多个资源上的 RESTful API 多个查询字符串

用于过滤多个字符串上的文件的 Pig 脚本/命令

针对ramda中的过滤器上的多个条件进行测试

反向过滤并计算多列上的多个数字