使用Javascript获取发送的GraphQL引用参数
我正在尝试使用Javascript查询Graphql端点,并使用此Javascript方法创建我的查询:使用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,
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,则查询将不起作用。所以,不管出于什么原因,它们都很重要。