簡體   English   中英

GraphQL & 使用嵌套訂閱 function

[英]GraphQL & Using a nested subscribe function

我正在編寫一個 graphql 訂閱服務器。 如果我編寫一個查詢,將解析器嵌套在另一個中是沒有問題的,所以查詢看起來像這樣:

query {
  messages {
    privateMessage {
      id
      message
      userId
    }
  }
}

所以首先執行messages解析器,然后執行privateMessage解析器。 我想知道訂閱是否可以實現相同的結構,所以它看起來像這樣:

subscription {
  messages {
    privateMessage {
      id
      message
      userId
    }
  }
}

編輯:

這是我擁有的當前根訂閱模式:

const RootSubscriptions = new GraphQLObjectType({
  name: 'RootSubscriptions',
  fields: {
    privateMessage: {
      type: PrivateMessage.type,
      resolve: PrivateMessage.resolve,
      subscribe: PrivateMessage.subscribe,
    },
    flaggedMessage: {
      type: FlaggedMessage.type,
      resolve: FlaggedMessage.resolve,
      subscribe: FlaggedMessage.subscribe,
    },
    teamMessage: {
      type: TeamMessage.type,
      resolve: TeamMessage.resolve,
      subscribe: TeamMessage.subscribe,
    },
  },
})

我希望它看起來像這樣:

const RootSubscriptions = new GraphQLObjectType({
  name: 'RootSubscriptions',
  fields: {
    messages: {
      type: new GraphQLObjectType({
        name: 'MessagesSubType',
        fields: {
          privateMessage: {
            type: PrivateMessage.type,
            resolve: PrivateMessage.resolve,
            subscribe: PrivateMessage.subscribe,
          },
          flaggedMessage: {
            type: FlaggedMessage.type,
            resolve: FlaggedMessage.resolve,
            subscribe: FlaggedMessage.subscribe,
          },
          teamMessage: {
            type: TeamMessage.type,
            resolve: TeamMessage.resolve,
            subscribe: TeamMessage.subscribe,
          },
        }
      })
    }
  },
})

編輯結束

問題是我讓messages訂閱 function 運行,但不是privateMessage訂閱 function 運行。 很想知道它是否可能以及如何實現它。 由於我使用 node.js 編寫它,因此我會很欣賞 js 中的示例,但任何指向解決方案的指針都會有所幫助。 提前致謝!

根據我對 graphQl 訂閱如何工作的理解,您可能對嵌套訂閱不太走運。 我還沒有找到支持這一點的支持文檔,但在我自己的實驗中,我還沒有發現它可以工作。 在這種情況下,我建議您有一個消息根訂閱,它需要訂閱類型的參數,在這種情況下是私有、標記或團隊消息的枚舉。 您可以使用 switch case 來確定訂閱並做出相應的反應。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM