You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ES6前JS引擎中GraphQL查询变量拼接报错求助

解决ES5环境下GraphQL查询中日期变量拼接的问题

问题根源

直接拼接Date对象时,JS会将其转换为默认的人类可读字符串(如Wed Feb 01 2023 14:47:24 GMT+0800 (中国标准时间)),这不符合GraphQL要求的ISO 8601格式日期字符串,且未用引号包裹,导致查询语法错误,返回422 Unprocessable Entity。另外原查询中audience对象后缺少逗号,也会破坏GraphQL的结构语法。

解决方案

  1. 将Date对象转换为ISO 8601格式字符串:使用publishDate.toISOString()方法
  2. 为日期字符串添加引号(GraphQL字符串类型必须用引号包裹),保持和原有代码一致的"实体转义
  3. 补充audience对象后的逗号,修复查询结构

修改后的代码

var today = new Date();
var publishDate = new Date(new Date().setDate(today.getDate() - 31));
// 格式化日期为ISO字符串并添加引号转义
var formattedPublishDate = '"' + publishDate.toISOString() + '"';
const query = JSON.stringify({query:
               '{' +
               '   all_insight_article(locale: "en-gb"'+
               '     where: {business_unit: {business_unit: {title: "Capital"}, MATCH: ALL}, audience: {MATCH: ALL, audiences: {title: "Management"}}, publish_date_gt:' + formattedPublishDate + '}'+
               '   ) {items {'+
               '        system {uid publish_details {time} updated_at}'+
               '        absolute_url title subtitle main_image'+
               '        audienceConnection     {edges {node {... on Audiences   {title system {uid}}}}}'+
               '        article_typeConnection {edges {node {... on ArticleType {title}}}}'+
               '        topicsConnection       {edges {node {... on Topics      {title display_name system {uid}}}}}}total}}'
        });

关键改动说明

  • formattedPublishDate变量:把日期转为GraphQL可识别的ISO格式,并用"包裹,确保是合法的字符串类型参数
  • 补充audience对象后的逗号:修复查询结构的语法错误,避免因格式问题触发422错误

内容的提问来源于stack exchange,提问作者David Garcia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 08:52:35