2017-10-28 37 views
0

我希望在發出某些請求時始終返回字段,以便客戶端可以執行其他操作。如何總是返回Graphql字段?

例如,如果用戶註冊成功我想顯示Flash消息。但它必須由後端處理,而不是前端。

我可以「要求」客戶總是要求特定的字段,它可以容納所需的信息,但它可能很容易被忽略,所以我想在需要時返回數據。

這可能嗎?

+0

提供的信息不足。你是否使用ajax(你的註冊表單通過ajax提交)?或者你是在談論一個分離的前端?你有沒有graphql的工作?你是否使用graphql模塊?什麼版本的Drupal?如果你需要幫助,你必須讓人們很容易幫助你。 – 2pha

回答

2

在GraphQL規範中沒有任何東西允許需要特定字段的同樣意義上的參數可能是必需的。但是,這可以在解析器內處理。舉例來說,如果你有一個名爲getFoos查詢,你想要求獲取該查詢時,總是要求現場foo的客戶,您的getFoos解析器看起來是這樣的:

function (obj, args, ctx, info) { 
    const fields = info.fieldNodes[0].selectionSet.selections.filter(s => s.name.value) 
    if (!fields.includes('foo')) return Promise.reject(new Error('Missing field foo!')) 
    // continue resolving the query as normal 
} 

每個解析器作爲其第四個參數是包含有關請求的詳細信息的信息對象,包括請求的字段。因此,在您的解析器中,只需驗證是否包含該字段,如果缺少該字段,則返回拒絕的Promise。這會導致您的查詢在該特定字段丟失的任何時候失敗。