После великолепной статьи AppSync с Vue-Apollo , однако , однако она не длится до реализации подписок.
В консоли Chrome я вижу следующую ошибку:
Необработанная ошибка подписки GraphQL Ошибка ввода: Не удается прочитать свойство 'subscription' из undefined в SubscriptionHandshakeLink.request (subscription-handshake-link.js? 419e: 161)
Я сделал следующее, но безрезультатно:
main.js
import AWSAppSyncClient from "aws-appsync";
import VueApollo from "vue-apollo";
import appSyncConfig from "@/assets/AppSync";
const client = new AWSAppSyncClient(
{
url: appSyncConfig.graphqlEndpoint,
region: appSyncConfig.region,
auth: {
type: appSyncConfig.authenticationType,
apiKey: appSyncConfig.apiKey
}
},
{
defaultOptions: {
watchQuery: {
fetchPolicy: "cache-and-network"
}
}
}
);
const appsyncProvider = new VueApollo({
defaultClient: client
});
window.App = new Vue({
el: "#app",
provide: appsyncProvider.provide(),
render: h => h(App),
});
Tasks.vue
<script>
import gql from "graphql-tag";
import ListTasks from '@/api/queries/ListTasks'
export default {
data: () => ({
taskname: '',
id: "test",
tasks: []
}),
apollo: {
tasks: {
query: () => ListTasks,
subscribeToMore: {
document: gql`subscription items($id: String!) {
onCreateTask(id: $id) {
id
completed
}
}`,
// Variables passed to the subscription. Since we're using a function,
// they are reactive
variables () {
return {
id: this.id,
}
}
},
update: data => data.listTasks.items
}
}
}
</script>