7
0.5.0
graphql-js版本包含對resolve
函數的重大更改 - 現在它會收到額外的context
參數。解析函數的上下文和rootValue參數的預期用例是什麼?
它在我看來像context
旨在承載用戶會話數據。現在rootValue
參數的用例是什麼?
0.5.0
graphql-js版本包含對resolve
函數的重大更改 - 現在它會收到額外的context
參數。解析函數的上下文和rootValue參數的預期用例是什麼?
它在我看來像context
旨在承載用戶會話數據。現在rootValue
參數的用例是什麼?
RootValue是頂級解析器的第一個參數,它在該函數中仍然有用。
根查詢/突變類型在技術上也可以是模式中另一個字段的解析類型。如果只有在通過非根類型訪問解析函數時纔可能提供輸入值,將會很尷尬。這裏有一個例子:
type Mutation {
someMutationField: Query
}
type Query {
someField: String
}
schema {
query: Query
mutation: Mutation
}
另一個原因保持rootValue:它可以用來一起合併兩個GraphQL子模式成一個更大的架構,其中的子模式駐留在不同的服務器上。爲了能夠做到這一點,您需要有一種方法將根值與查詢一起傳遞給頂級解析函數。當前用於express-graphql的HTTP傳輸不會讓你這樣做,但它可以很容易地添加。
即使我沒有看到任何人以這種方式使用過rootValue,我認爲遲早有人會這樣使用它,或者找到其他用途,這可能是爲什麼它不是從GraphQL-JS中刪除。
我也很困惑,但我認爲'context'主要用於一般auth相關數據,'rootValue'用於其他應用程序特定數據。 – Joon
由於幾乎每個應用程序都需要基於身份驗證的訪問控制,因此我認爲他們決定將其作爲第三個參數,以方便使用,而不是每次從info arg中摧毀它。 – Joon
'rootValue'只傳遞給頂級解析器,而'context'在每個解析器中都可用。但我不確定爲什麼這種區別已經存在,或者'rootValue'如何有用了。 –