Angular 从Appsync客户端订阅GraphQL变体

Angular 从Appsync客户端订阅GraphQL变体,angular,graphql,apollo-client,aws-appsync,Angular,Graphql,Apollo Client,Aws Appsync,我正在Angular中使用GraphQL和AWS中的Appsync开发聊天应用程序。创建新聊天室时的工作流程是模拟新聊天室并将其发送到服务器,在服务器端为该聊天室生成聊天室id,我需要检索该聊天室id并将其发送到本地商店 我的想法是,我应该能够订阅mutate函数,或者在执行变异时创建的可观察查询。但是,我在尝试订阅时收到错误“observable.subscribe不是函数”。如果我尝试订阅整个函数(client.mutate函数),也是一样的 这是导致问题的当前代码: this.appsyn

我正在Angular中使用GraphQL和AWS中的Appsync开发聊天应用程序。创建新聊天室时的工作流程是模拟新聊天室并将其发送到服务器,在服务器端为该聊天室生成聊天室id,我需要检索该聊天室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));
      })
我还可以控制台记录可观察对象,并查看值存储在可观察对象上的uuu 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,我不知道为什么。如果有人知道,请随意回答。否则它工作得很好:)。

我可以通过在运行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,我不知道为什么。如果有人知道,请随意回答。否则效果很好:)