1
我瞭解如何在創建GraphQL服務器時設置上下文對象,例如Apollo GraphQL服務器;設置上下文以處理由已觸發的訂閱觸發的請求
const app = express();
app.use(GRAPHQL_URL, graphqlExpress({
schema,
context: {
foo: 'bar'
},
}));
以便在處理傳入請求時將上下文對象傳遞給我的解析器。
但是,當解析器被訂閱觸發時,我沒有看到這個上下文對象(即客戶端訂閱了GraphQL訂閱,並定義了訂閱觸發時要發送給他們的數據的形狀);在這種情況下,上下文看起來是空的對象。
有沒有辦法確保我的上下文對象在調用了PubSub.publish()調用後的解析器時正確設置?
許多感謝你的迴應;中間件interceptit絕對是我需要去的方式,因爲我需要根據「觸發事件」中的信息修改上下文。 – wabrit
然而,它似乎並沒有爲我工作 - 如果我以上面建議的方式定義我自己的執行功能,我可以看到它被設置到訂閱服務器,但它從來沒有打我的方法,並總是通過**標準** graphql execute()方法。查看'graphql \ subscription \ subscribe:subscribeImpl()'它似乎總是調用'graphql \ execution \ execute.js'中的默認值。 – wabrit
好吧,我想我沒有正確理解你的問題。你在客戶端訂閱。並且在訂閱中添加一個參數,說明結果應該是什麼樣子? –