2017-08-20 38 views
0

我有以下的情況下,類選項​​字段:桑格利亞-graphql:在derivedInputObjectType傳遞作爲一個突變參數時,錯誤

case class BusinessUserRow(id: String, firstName: Option[String], lastName: Option[String], email: Option[String]) 

我想創造商務用戶對象的的inputType對象

val BusinessUserInputType = 
    deriveInputObjectType[BusinessUserRow](
     InputObjectTypeName("input"), 
     InputObjectTypeDescription("A Business user") 
    ) 

,我想這BusinessInputObject作爲參數傳遞給addBusinessUser突變

val businessUserInputArg = Argument("input", BusinessUserInputType) 

val Mutation = ObjectType("Mutation", fields[RepoContext, Unit](
    Field("addBusinessUser", BusinessUserType, 
     arguments = businessUserInputArg :: Nil, 
     resolve = c ⇒ c.ctx.BusinessUserRepo.create(c.arg(businessUserInputArg))))) 

但我得到以下編譯錯誤:

Type dao.Tables.BusinessUserRow @@ sangria.marshalling.FromInput.InputObjectResult cannot be used as an input. Please consider defining an implicit instance of `FromInput` for it. 
[error] val businessUserInputArg = Argument("input", BusinessUserInputType) 

但BusinessRow所有字段是標量值。我不明白是什麼導致這個問題。是否有我沒有看到的東西?

回答

1

爲了反序列化BusinessUserRow案例類中的輸入,您需要提供FromInput[BusinessUserRow]類型類的實例。你可以在這裏找到更文檔:

http://sangria-graphql.org/learn/#frominput-type-class

所以,如果你是,例如,使用噴霧JSON,那麼你需要定義JsonFormatBusinessUserRow

0

的感謝!只是加入這條線解決了我的問題:

implicit val businessUserFormat = Json.format[BusinessUserRow]