Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/469.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Javascript获取发送的GraphQL引用参数_Javascript_Graphql - Fatal编程技术网

使用Javascript获取发送的GraphQL引用参数

使用Javascript获取发送的GraphQL引用参数,javascript,graphql,Javascript,Graphql,我正在尝试使用Javascript查询Graphql端点,并使用此Javascript方法创建我的查询: module.exports = (uid) => `{ rich_text_data_for_uid(uid:"${uid}") { record_uid field_name row_number value } }`.replace(/\n/g,

我正在尝试使用Javascript查询Graphql端点,并使用此Javascript方法创建我的查询:

module.exports = (uid) =>
`{
    rich_text_data_for_uid(uid:"${uid}")
        {
            record_uid
            field_name
            row_number
            value
        }
}`.replace(/\n/g, " ");
这是资源管理器中的有效查询:

{
    rich_text_data_for_uid(uid:"31D2A75A3254D5EA852581D7006C2BA5")
        {
            record_uid
            field_name
            row_number
            value
        }
}
请注意,下面的JSON经过格式化以使其可读,但在通过上面的replace方法调用发送到服务器时,它没有换行符

这是作为我的获取请求主体发送的内容,并且由于引用而导致了我怀疑的问题:

{ "query": "{
    rich_text_data_for_uid(uid:"31D2A75A3254D5EA852581D7006C2BA5")
        {
            record_uid
            field_name
            row_number
            value
        }
}"
我还尝试转义引号,并将其作为有效负载发送:

{ "query": "{
    rich_text_data_for_uid(uid:\"31D2A75A3254D5EA852581D7006C2BA5\")
        {
            record_uid
            field_name
            row_number
            value
        }
}"
我的Graphql响应始终为400:

POST正文发送了无效的JSON

编辑当我尝试使用变量时,也会出现错误:

    {"query":
"{ rich_text_data_for_uid(uid:$uid) {record_uid field_name row_number value } }",
"variables":{"uid":"31D2A75A3254D5EA852581D7006C2BA5"}}
上面说

未定义变量$uid


我应该发送什么来将字符串参数传递给Graphql?

而不是删除问题-我将发布我得出的答案:

这是使其有效的方法-我们必须将查询字符串包装在一个参数化块中,该块描述我们传递的变量:

module.exports = (uid) =>
`query rd($uid: String) {
    rich_text_data_for_uid(uid:\$uid)
        {
            record_uid
            field_name
            row_number
            pardef
            value
        }
}`.replace(/\n/g, " ");
与此JSON数据结合使用,效果良好:

const query = JSON.stringify({"query": richTextQueryForUid(uid), "variables": {"uid": uid}})

您是否显式地调用fetch?添加代码如何发送requestNewlines不应影响查询,如果您愿意,可以将它们保留在查询字符串中。@skyboyer fetch没有问题,我有十几个其他查询以相同的方式工作,它们都很好。@HRK44-Newlines不应像您所说的那样。但是,如果删除.replace/\n/g,则查询将不起作用。所以,不管出于什么原因,它们都很重要。