GraphQL & 使用嵌套订阅功能

cow*_*azy 5 javascript graphql

我正在编写一个 graphql 订阅服务器。如果我编写一个查询,将解析器嵌套在另一个中是没有问题的,因此查询将如下所示:

query {
  messages {
    privateMessage {
      id
      message
      userId
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

所以首先messages执行解析器,然后privateMessage执行解析器。我想知道订阅是否可以实现相同的结构,因此它看起来像这样:

subscription {
  messages {
    privateMessage {
      id
      message
      userId
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

编辑:

这是我拥有的当前根订阅模式:

query {
  messages {
    privateMessage {
      id
      message
      userId
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

我希望它看起来像这样:

subscription {
  messages {
    privateMessage {
      id
      message
      userId
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

编辑结束

问题是我让messages订阅功能运行但没有privateMessage订阅功能运行。很想知道它是否可能以及如何实现它。因为我是用 node.js 编写的,所以我很感激 js 中的一个例子,但任何指向解决方案的指针都会有所帮助。提前致谢!

Kis*_*nga 1

根据我对 graphQl 订阅如何工作的理解,您可能对嵌套订阅不太幸运。我没有找到支持文档来支持这一点,但在我自己的实验中,我没有发现这可行。在这种情况下,我建议您有一个消息根订阅,它需要订阅类型的参数,在本例中是私有、标记或团队消息的枚举。您可以使用 switch case 来确定订阅并做出相应的反应。