持久性不能将预期类型“密钥表”与实际类型文本匹配

时间:2015-05-05 07:02:23

标签: haskell yesod persistent

我不知道这对你来说真的是一个问题,但对我来说这是个大问题。 我有一个用html创建的表单,其中一个字段将保存城市列表(它是一个选择标记),因此该选项的值包含city_id

在我的帖子处理程序中它将如下所示:

 postPriceR :: Handler Html
 postPriceR = do
    now <- liftIO getCurrentTime
    city <- runInputPost $ ireq textField "city"
    amount <- runInputPost $ ireq textField "amount"
    runDB $ insert $ Prices city 100.0 now Nothing
    redirect PriceR

这也会对你有所帮助: 我的模特:

Prices
    cityId CitiesId
    amount Double
    createdOn UTCTime default=now()
    updatedOn UTCTime Maybe
    deriving Show Generic
Cities
    stateId StatesId
    name Text
    createdOn UTCTime default=now()
    updatedOn UTCTime Maybe
    deriving Show Generic

并给我这个警告:

 Couldn't match expected type ‘Key Cities’ with actual type Text …
希望你帮助我。谢谢。

1 个答案:

答案 0 :(得分:1)

我使用@CarstenKönig帮助解决了这个问题。使用toSqlKey

这里是:

import Data.Int

runDB $ insert $ Prices (toSqlKey (read (unpack city) :: Int64 ) ) 100.0 now Nothing

感谢大家的帮助。