我在學習Strawberry的過程中遇到

TypeError: Mutation fields cannot be resolved. Field type must be an output type.

那個時候會觸發這個Error是因為我沒使用官方的教學方案,想要自己模塊化,結果觸發問題網上也沒答案QQ。

為什麼會觸發

import strawberry
from src.dao.user.mutation import *
from src.model.User import User, UserInput


@strawberry.type
class Mutation:
    create_user: UserInput=strawberry.mutation(resolver=create_user)

會出現這個問題是因為 Mutation 設定返回的數據是UserInput,然而這是錯的,因為這個是Input的Schema。

解決方案

正確的寫法是把UserInput換成User

import strawberry
from src.dao.user.mutation import *
from src.model.User import User


@strawberry.type
class Mutation:
    create_user: User =strawberry.mutation(resolver=create_user)

這樣的話當GraphQL成功創建一個新的User資料的時候就會把剛剛Insert的資料返回.

或者你也可以自定義返回的數據。

@strawberry.type
class response:
    message: str
    status: str

總之返回的數據是需要Query的Schema而不是Input的Schema!。