0
還是很新的GraphQL,授權的GraphQL紅寶石突變
的理念是「安全」的突變,這意味着限制那些在環境傳送當前用戶。基本一個:
Create = GraphQL::Relay::Mutation.define do
name "AddItem"
input_field :title, !types.String
return_field :item, Types::ItemType
return_field :errors, types[types.String]
resolve -> (object, inputs, ctx) {
if ctx[:current_user]
... do the stuff...
else
...returns an error...
end
}
end
比方說,一個具有多個突變......這非常相同的條件將不得不重複每次需要。
我很明顯偏向於before_action
在rails中可用;在graphql-ruby中有沒有類似的東西? (例如,'受保護突變',無論如何希望在集中式設置中選擇性地保護可用輸出的特定部分)
或者應該採用完全不同的方法嗎?
你如何最終做到了這一點任何更新? – maverick5
@ maverick5如上所示,在解析器中驗證;因爲這或多或少是一條路(見下面的評論)。您可以在上下文中傳遞當前用戶(請參閱https://gist.github.com/benbonnet/5c8b90eaabf2a3cbf71a6c7f910bade0中的'execute'方法)。也就是說,我最終爲這些需求進入postgraphql(postgraphile)。一個巨大的節省時間,極大地減少了你的graphql代碼樣板,並且由於它的性質,對軌道「隱藏」的許多事情的真正啓發 – Ben