我正在使用GraphQL和AWS中的Appsync在Angular中使用聊天应用程序。创建新聊天时的工作流程是模拟新聊天并将其发送到服务器,在服务器端会为此聊天生成一个chat_id,我需要将其检索并将其发送到本地商店。>
我的想法是,我应该能够订阅mutate函数,或者我在进行突变时创建的可观察查询。但是,尝试订阅时出现错误“ 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变量中。但是我无法检索这些值,也无法订阅可观察的值。
关于如何进行此操作的任何想法或提示?
答案 0 :(得分:0)
运行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,但我不确定为什么。如果有人知道,请随时回答。否则,效果很好:)。