node.js - GraphQL-js Node/Express : How to pass a stringed object in a GraphQL Query?

标签 node.js express graphql-js

我的目标是能够在 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),
},

最佳答案

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

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

关于node.js - GraphQL-js Node/Express : How to pass a stringed object in a GraphQL Query?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42707853/

相关文章:

javascript - 读取用户输入直到答案正确

javascript - dotenv 和 nodejs 未定义 process.env 变量

javascript - 尝试使用expressJS重定向时出现"blocked by CORS policy"

node.js - graphQL - 类型必须是输出类型

relayjs - 共享中继节点接口(interface)

node.js - res.render 不加载 Sequelize 数据值

node.js - 根据条件逻辑调用Q Promise

node.js - webpack-dev-middleware 与 create-react-app

javascript - Express js 不提供静态文件

node.js - 字符串列表的变异变量 "$_v0_data"得到无效值 Graphql Node.js