如何将 javascript 变量传递给 graphql 查询?
How to pass javascript variable to graphql query?
我有一个超级简单的 GraphQl 查询,但我无法根据输入使查询动态化。假设您将在 javascript 中获得一个要传递给查询的字符串,它是如何完成的?以下面的例子,我如何替换产品中 Sku 字段上的硬编码字符串“3111”,而是从变量 myString 中插入值?我只是在尝试传递它时遇到错误。
let myString = "3111"
`query getProductBySku {
site {
product(sku: "3111") {
id
entityId
name
sku
}
}
}`
看这里:https://graphql.org/graphql-js/passing-arguments/
在你的情况下:
var query = `query getProductBySku($sku: String) {
site {
product(sku: $sku) {
id
entityId
name
sku
}
}
}
`;
fetch('/graphql', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Accept': 'application/json',
},
body: JSON.stringify({
query,
variables: { "3111" }, // this refers to SKU
})
})
.then(r => r.json())
.then(data => console.log('data returned:', data));
基本上除了创建一个允许传递参数的查询之外,您还需要一个 POST 请求和正文设置来容纳预期要完成的输入
我有一个超级简单的 GraphQl 查询,但我无法根据输入使查询动态化。假设您将在 javascript 中获得一个要传递给查询的字符串,它是如何完成的?以下面的例子,我如何替换产品中 Sku 字段上的硬编码字符串“3111”,而是从变量 myString 中插入值?我只是在尝试传递它时遇到错误。
let myString = "3111"
`query getProductBySku {
site {
product(sku: "3111") {
id
entityId
name
sku
}
}
}`
看这里:https://graphql.org/graphql-js/passing-arguments/
在你的情况下:
var query = `query getProductBySku($sku: String) {
site {
product(sku: $sku) {
id
entityId
name
sku
}
}
}
`;
fetch('/graphql', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Accept': 'application/json',
},
body: JSON.stringify({
query,
variables: { "3111" }, // this refers to SKU
})
})
.then(r => r.json())
.then(data => console.log('data returned:', data));
基本上除了创建一个允许传递参数的查询之外,您还需要一个 POST 请求和正文设置来容纳预期要完成的输入