Почему ошибка выбрасывания AWSAppSyncClient Сетевая ошибка: Отсутствует optimisticResponse в автономном режиме на лямбде? - PullRequest
0 голосов
/ 12 октября 2018

Лямбда вызывает мутации AWSAppSync.Он ведет себя нестабильно.Время от времени выдает ниже упомянутую ошибку

Ошибка: ошибка сети: отсутствует optimisticResponse в автономном режиме.

Это сегмент кода кода для инициализации объекта клиента AWSAppSyncClient.

 client = new AWSAppSyncClient({
        url: settings.url,
        region: settings.region,
        auth: {
            type: type,
            apiKey: settings.apiKey,
        },
        disableOffline: false
    });

Похоже, что связь между лямбда и AppSync теряется во время мутации.

 client.hydrated().then((client,error) => { 
         client.mutate({ 
                mutation: updateMutation, 
                variables: { 
                    ID: vehicle.VehicleID
             }
         });
 });

- причина использования appsync в лямбдедолжен выполнить мутации, и все подписчики получат три обновления как измененные.

Подробный журнал ошибок

{ Error: Network error: Missing optimisticResponse while offline.
at new ApolloError (/var/task/node_modules/aws-appsync/node_modules/apollo-client/bundle.umd.js:124:32)
at Object.error (/var/task/node_modules/aws-appsync/node_modules/apollo-client/bundle.umd.js:1088:32)
at notifySubscription (/var/task/node_modules/zen-observable/lib/Observable.js:130:18)
at onNotify (/var/task/node_modules/zen-observable/lib/Observable.js:161:3)
at SubscriptionObserver.error (/var/task/node_modules/zen-observable/lib/Observable.js:220:7)
at notifySubscription (/var/task/node_modules/zen-observable/lib/Observable.js:130:18)
at flushSubscription (/var/task/node_modules/zen-observable/lib/Observable.js:112:5)
at /var/task/node_modules/zen-observable/lib/Observable.js:156:14
at /var/task/node_modules/zen-observable/lib/Observable.js:67:7
at <anonymous>
graphQLErrors: [],
networkError: Error: Missing optimisticResponse while offline.
at /var/task/node_modules/aws-appsync/lib/link/offline-link.js:80:35
at new Subscription (/var/task/node_modules/zen-observable/lib/Observable.js:179:34)
at Observable.subscribe (/var/task/node_modules/zen-observable/lib/Observable.js:258:14)
at /var/task/node_modules/aws-appsync/lib/client.js:151:55
at <anonymous>,
message: 'Network error: Missing optimisticResponse while offline.',
extraInfo: undefined }

1 Ответ

0 голосов
/ 13 октября 2018

Правильный способ вызова мутации - включить параметр optimisticReponse в метод мутации, как показано ниже.

client.mutate({ 
                mutation: updateMutation, 
                variables: tempVehicle,
                optimisticResponse: () => ({ 
                    updateDslvehicleStateMutation: 
                    {
                        ID: tempVehicle.ID,
                        OPP: tempVehicle.OPP,
                        CDC: tempVehicle.CDC,
                        MND: tempVehicle.MND,
                        loc: tempVehicle.loc,
                        CSP: tempVehicle.CSP,
                        __typename: 'UpdateVehicleInput'
                    }
                })
            })

Если не добавить optimisticResponse в метод mutate, то не удастся выполнить мутацию в Appsync.

...