GraphQL-js Node/Express:如何在 GraphQL 查询中传递字符串对象?

Posted

技术标签:

【中文标题】GraphQL-js Node/Express:如何在 GraphQL 查询中传递字符串对象?【英文标题】:GraphQL-js Node/Express: How to pass a stringed object in a GraphQL Query? 【发布时间】:2017-07-31 04:14:18 【问题描述】:

我的目标是能够在 GraphQL 查询中传递字符串对象。

目标:

 
    accounts (filter: 
      '"fieldName": "id",
      "fieldValues":["123"],
      "filterType":"in"')
        id
      
 

错误:

"Syntax Error GraphQL request (1:22) Unexpected single quote character ('), did you mean to use a double quote (\")?"

问题是 GraphQL 似乎不接受用单引号括起来的字符串。

在对象内部使用单引号是不可能的,因为这需要对编译这些对象的客户端进行重大更改。

示例:

  
 "fieldName": "id",
 "fieldValues":["123"],
 "filterType":"in"
 

架构:

 accounts: 
   type: new GraphQLList(accountType),
   args: 
   id:  type: GraphQLString ,
    status:  type: GraphQLString ,
    filter:  type: GraphQLString ,
    sort:  type: GraphQLString ,
   ,
   resolve: (root, args,  loaders ) => loaders.account.load(args),
,

【问题讨论】:

【参考方案1】:

您需要在查询字符串中转义双引号:

 
  accounts (
   filter: "\"fieldName\":\"id\",\"fieldValues\":[\"123\"],\"filterType\":\"in\""
  ) id 
 

【讨论】:

感谢您的意见。不幸的是,这行不通,因为这仍然需要在客户端更改代码。

以上是关于GraphQL-js Node/Express:如何在 GraphQL 查询中传递字符串对象?的主要内容,如果未能解决你的问题,请参考以下文章

node + express +mongoose 实现基本登录注册

使用 Graphql-js 模式克服代码重复

错误 cb.apply 不是 Node Express 项目中的功能 [尝试安装软件包时] --

Node.js_express_中间件 middleware_登录/注册实例

如何添加node express 为windows 启动服务器

运行 Mongoose 时执行 ajax 调用时如何处理 Node.js 发现