2016-07-13 46 views
0

我正在爲將查詢GraphQL服務器的應用程序編寫客戶端代碼。在我的代碼中的幾個地方,我傳遞的數據最終會變成一個查詢變量,因此它需要根據我的模式中的特定GraphQLInputType進行驗證。在研究graphql-js提供的一些實用程序時,它看起來像isValidJSValue檢查器正是我正在尋找的,and its comments even mention它打算用於這樣做。如何使用isValidJSValue在我的客戶端代碼中驗證查詢變量?

問題是我沒有訪問我想驗證的JS對象作爲JS對象,這是我很確定函數正在尋找。我正在將我的模式(作爲npm depdendency)導入爲JSON,或者我也在模式表示中使用它。是否有一些其他工具可用於從其中某個來源獲取我需要的JS類型,然後使用它來檢查我的數據是否使用isValidJSValue?或者還有其他方式可以解決這個問題,我只是沒有想到?

回答

0

您可以使用您已經導入使用buildClientSchema這裏來構建一個實際GraphQL模式實例的JSON模式:https://github.com/graphql/graphql-js/blob/master/src/utilities/buildClientSchema.js

然後,它應該是看在生成的架構types領域找到一個簡單的事情你輸入類型,然後在其上調用isValidJSValue

雖然我很好奇 - 爲什麼在發送之前驗證客戶端上的值,而不是僅僅依靠服務器的驗證呢?

+0

謝謝,工作!爲了在我的應用程序中實現「撤消」行爲,我需要在幾個不同的地方依靠一個對象的形狀來構建某種對象的形狀。其中一個地方恰好是我將突變發送到服務器的地方,所以不是建立一些其他類型的檢查,我只想使用GraphQL給我提供的開箱即用功能。我想我會把它作爲一次構建時間檢查,或者甚至可能是單元測試的一部分,而不是在運行時執行的任何事情 - 基本上只是對開發人員進行的健全性檢查。 – kgoggin