Вставка более одной записи с использованием мутации GraphQL

#graphql

#graphql

Вопрос:

Я хотел бы вставить более одной записи с использованием мутации GraphQL, но это выдает ошибку. вот код, который я использовал для этого.

 input BusinessImageInput {
  business_id: Int
  image_url: String
}

mutation MyMutation($images: [BusinessImageInput!]) {
  insert_business_images(objects: [$images]) {
    affected_rows
  }
}

  

И вот переменная, которую я хочу передать как параметр.

 {"images":  [
    {
    "business_id": 15,
    "image_url": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTVzlb1cEw8E0LeLJzk9c0OQV-N387Nt2Kn5wamp;usqp=CAU"
    },
    {
       "business_id": 15,
       "image_url": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTVzlb1cEw8E0LeLJzk9c0OQV-N387Nt2Kn5wamp;usqp=CAU"
    }
  ]
}
  

Вот ошибка

 {
  "errors": [
    {
      "extensions": {
        "path": "$.query",
        "code": "bad-request"
      },
      "message": "not a valid GraphQL query"
    }
  ]
}
  

Пожалуйста, помогите мне.

Ответ №1:

В вашем коде есть одна вопиющая проблема. Эта строка

 insert_business_images(objects: [$images]) {
  

должно быть

 insert_business_images(objects: $images) {
  

Обратите внимание на снятые квадратные скобки.

Если это не поможет, нам понадобится дополнительная информация, например:

  • какую ошибку вы получаете?
  • какую реализацию GraphQL вы используете как на стороне клиента, так и на стороне сервера?
  • как выглядит код GraphQL (и, возможно, преобразователи) на сервере? Вы предоставили нам только клиентскую часть уравнения.

Комментарии:

1. Я использую GraphQL API Explorer. Прилагаемые сведения об ошибке в деталях вопроса.

Ответ №2:

Это так просто, как

 mutation MyMutation($images: [BusinessImageInput!]) {
  insert_business_images(images: $images) {
  

или

 mutation MyMutation($objects: [BusinessImageInput!]) {
  insert_business_images(objects: $objects) {
  

зависит от определения мутации сервера insert_business_images , имени аргумента ( images или objects ?) — используйте explorer … и [как вы можете видеть выше] обычно входные аргументы и переменные имеют одинаковые имена, они отличаются только $ префиксом.

https://graphql.org/learn/queries/#variables

Также вы должны следовать типам ввода с сервера.