0

公佈的對象,我使用與GraphQL訂閱和訂閱運輸-WS的Express服務器。GraphQL-訂閱:如何獲得認購解析器

我已經設置了一個給定信道的訂閱:

... 
 

 
const subscriptionManager = new SubscriptionManager({ 
 
    schema: executableSchema, 
 
    pubsub: pubsub, 
 
    setupFunctions: { 
 
    testRunChanged: (options, args) => { 
 
     return { 
 
     testRunChangedChannel: { 
 
      filter: (testRun) => { 
 
      return testRun.id === args.testRunId; 
 
      } 
 
     }, 
 
     }; 
 
    }, 
 
    }, 
 
}); 
 

 
...

收到突變後的過程被啓動,其中試運行的數據庫條目是在服務器上更新等結束了。現在,當數據庫操作的更新承諾通過時,應該通知客戶端。

使用從發佈訂閱訂閱管理髮布功能,獲取有關更新的測試運行的信息:

... 
 

 
RunningTestDbService.setToFinished(testRun).then(updatedTestRun => { 
 
    pubsub.publish("testRunChangedChannel", updatedTestRun); 
 
    }) 
 

 
...

的訂閱管理器後置過濾器的訂閱取決於公佈testRun和訂閱testRunId調用訂閱解析器函數。要更新客戶端,我必須再次獲取更新的測試運行。

我怎樣才能得到訂購解析函數內公佈的試運行對象?

認購和解析器是這樣的:

... 
 

 
`testRunChanged(testRunId: ID!): TestRun!` 
 

 
... 
 

 
Subscription: { 
 
testRunChanged(_, { testRunId }) { 
 

 
// need to fetch the test run from database again 
 
    return TestRunDbService.getTestRunWith(testRunId); 
 
    }, 
 
}, 
 

 
...

回答

0

publish方法有效載荷使用的對象是那麼您的訂閱resolver方法root參數 - 所以在這種情況下,這是您的testRunChanged解析器功能中的_。你應該簡單地做return _