Как добавить массив объектов в запрос на изменение клиента apollo? - PullRequest
0 голосов
/ 05 октября 2019

Я создаю мобильное приложение с нативным скриптом, которое использует API-интерфейс graphql, и использую клиент apollo с помощью apollo boost.

Проблема возникает, когда я пытаюсь отправить массив объектов внутри мутации, как показано ниже:

let {
    to,
    total,
    drugList
} = order

apolloClient.mutate({
    mutation: gql `mutation {
        makeOrder(
            to: "${to}",
            total: ${total},
            drugList: ${drugList}
        ){
            id
        }
    }`
}).then((res) => {
    console.log(res)
}).catch((error) => {
    console.log(error)
})

Я попытался записать список drugList внутри литералов шаблона, например:

console.log(`${drugList}`)

Но я получил [объект объекта], [объект объекта] , затем яЯ пытался использовать ${[...drugList]} вместо этого, и я получил желаемую структуру массива объектов, но функция mutate клиента apollo не принимает его (не выполняет мутацию или регистрирует ошибку).

AmЯ что-то пропустил, чтобы запустить его, или есть рекомендации по запуску?

1 Ответ

0 голосов
/ 05 октября 2019

Благодаря Берги после того, как он заметил, что запрос использует шаблонный литерал gql, который я не могу сравнить с простой строкой шаблона в тесте console.log.

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

let {
    to,
    total,
    drugList
} = order

apolloClient.mutate({
    mutation: gql `mutation ($to: ID!, $total: Float!, $drugList: [OrderDrugsListInput!]!) {
        makeOrder(
            to: $to,
            total: $total,
            drugList: $drugList
        ){
            id
        }
    }`,
    variables: {
        to: to,
        total: total,
        drugList: drugList
    }
}).then((res) => {
    console.log(res)
}).catch((error) => {
    console.log(error)
})
...