Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/397.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/21.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_Reactjs_Graphql_Template Literals - Fatal编程技术网

Javascript 将字符串数组传递给GraphQL查询,嵌入时转换为整数

Javascript 将字符串数组传递给GraphQL查询,嵌入时转换为整数,javascript,reactjs,graphql,template-literals,Javascript,Reactjs,Graphql,Template Literals,我试图找到一种方法来传递字符串数组并将其嵌入到查询中(使用React、GraphQL)。问题是它接受参数作为字符串数组,但在嵌入时将其转换为字符串 假设我有一个函数,它调用来获取一些数据。(我现在硬编码了这个参数,但我一弄明白它就会变成一个变量) //我在这里调用函数 const query = getData.generate(["123", "456"]); return GraphqlClient.query(query) .then((e) =>

我试图找到一种方法来传递字符串数组并将其嵌入到查询中(使用React、GraphQL)。问题是它接受参数作为字符串数组,但在嵌入时将其转换为字符串

假设我有一个函数,它调用来获取一些数据。(我现在硬编码了这个参数,但我一弄明白它就会变成一个变量)

//我在这里调用函数

 const query = getData.generate(["123", "456"]);
        return GraphqlClient.query(query)
        .then((e) => {
            return e.data.oneAppProviders;
        }) .......
//这是带有嵌入参数的查询。(后端需要一个字符串数组。)

当我运行它时,会出现以下错误:

GraphQLError {message: "Syntax Error: Expected Name, found Int "456""
我猜,当我嵌入它时,它会把它转换成整数。。。 如果我的数组为[“123”],则会出现以下错误:

[GraphQL error]: Message: Expected type [String], found 123.

我希望这个问题足够清楚。提前感谢。

一般来说,您应该避免像这样将数据嵌入查询语言字符串中。(如果
id
变量实际上是一个包含圆括号和大括号的字符串,该怎么办?这是一个更著名的(如果是虚构的)潜在问题示例。)

GraphQL支持顶级查询参数,您应该在此处使用这些参数。如果你提出你的问题

query Providers($ids: [ID!]!) {
    oneAppProviders(id: $ids) {
        id
        firstName
     }
}
大多数查询库都有传递附加参数的方法;所以在你的情况下,这可能看起来像

const query = gql`...`;
const variables = { ids: ids };
GraphqlClient.query(query, variables).then(...);

您的问题的简单解决方案如下:

let myarray = ["string1", "string2", "String3"];
let dataToSend = myarray.toString();
let gql`
{
   passArray(data:${dataToSend}){
   }
}`;

也许这有助于某人:

export const UserFlagsQuery = gql`
  query($flags: [String!]!) {
    user {
      flags(where: { AND: [{ name_in: $flags }, { enabled: true }] }) {
        name
        enabled
      }
    }
  }
`;
在React
query
组件中使用此查询,如下所示:

<Query
  query={UserFlagsQuery}
  variables={{
    flags: ["flag1", "flag2", "..."],
  }}
>

感谢@davidmaze的回答

<Query
  query={UserFlagsQuery}
  variables={{
    flags: ["flag1", "flag2", "..."],
  }}
>