从 Appsync Client 订阅 GraphQL 突变



我正在 Angular 中使用 GraphQL 和 AWS 中的 Appsync 开发聊天应用程序。创建新聊天时的工作流程是模拟新聊天并将其发送到服务器,在服务器端为此聊天生成一个chat_id,我需要检索并将其发送到我的本地商店。

我的想法是,我应该能够订阅突变函数,或者我在执行突变时创建的可观察查询。但是,我在尝试订阅时收到错误"observable.subscribe 不是一个函数"。如果我尝试订阅整个函数(client.mutate 函数(,情况也是一样的。

这是我当前的代码,导致问题:

this.appsync
.hc()
.then(client => {
const observable: ObservableQuery = client.mutate({
mutation: createChatRoom,
variables: {
input: {
user_id: user.id,
text: text,
}
},
fetchPolicy: "no-cache"
})
observable.subscribe(data => console.log(data));
})

我还可以控制台记录可观察量,并查看值是否存储在可观察对象的__zone_symbol_value变量中。但是我无法检索这些值,也无法订阅可观察量。

关于如何推进这项工作的任何想法或提示?

我能够通过在 client.mutate 运行后添加一个 .then(( 语句来解决这个问题。解决方案代码:

this.appsync
.hc()
.then(client => {
const observable: ObservableQuery = client.mutate({
mutation: createChatRoom,
variables: {
input: {
user_id: user.id,
text: text,
}
},
fetchPolicy: "no-cache"
}).then(data => {
conversation.id = data.data.createChatRoom.chat_id;
})

出于某种原因,我不得不调用data.data,我不知道为什么。如果有人知道这一点,请随时回答。否则,它:)工作得很好。

最新更新