2016-04-21 62 views
5

我正在嘗試使用GraphQL,並需要幫助瞭解如何知道在即將執行突變時提供的根值。如何確定什麼根值用於GraphQL突變

具體示例:您想要更新當前登錄用戶的用戶名。突變如下所示:

mutation TestMutation { 
     updateMyUsername(newName: "CoolName") { 
         username } 
} 

此處提供的根對象是當前用戶。但是,如果你沒有解析並看到它的名字,你怎麼知道這一點?由於只有一個端點存在,因此不能根據URL做出任何決定。而解析字符串只是爲了將它發送到更進一步解析的地方,聽起來很浪費。

在URL或請求主體中提供一些額外的參數來爲應用程序提供更多的上下文可能是常見做法嗎?

回答

5

在URL中包含更多數據並不常見,但由於每個變體都有一個函數支持,所以不需要解析其名稱,只需在函數中定義它即可。

由於突變永遠是最高級別的,它們的根對象將永遠是最高級別的根對象。如果您需要訪問不同的對象,則需要確保您提供了足夠的信息來檢索它

要跟蹤當前登錄的用戶,請查看context,運行GraphQL的初始參數之一查詢並在每個解析函數中提供。上下文通常用於跟蹤登錄的用戶。

既然你有一個定義「changeMyUsername」的函數,你有登錄的用戶,並且你提供了新用戶名的參數,你應該擁有實現該函數主體所需的一切。