0
我試圖在servant中使用persistent-postgresql。永久使用`get`和`toSqlKey`
我有一個User
模型。
我想要一個端點,它需要一個id並返回帶有該id的用戶。
根據其他答案,我可以使用toSqlKey
將Int64
轉變爲Key
以提供給get
。
我的功能看起來像:
oneUser :: Int64 -> App (Entity User)
oneUser userId = do
maybeUser <- runDb $ get $ toSqlKey userId
case maybeUser of
Nothing ->
throwError err404
Just user ->
return user
當我嘗試編譯我的錯誤Couldn't match expected type ‘PersistEntityBackend (Entity User)’ with actual type ‘SqlBackend’
使用selectList
工作正常。
allUsers :: App [Entity User]
allUsers = runDb $ selectList [] []
請告訴我我做錯了什麼,我應該在未來看看這樣的東西。我找不到get
上hackage /庫對stackage權等版本
runDb
樣子:
runDb :: (MonadReader Config m, MonadIO m) => SqlPersistT IO b -> m b
runDb query = do
pool <- asks getPool
liftIO $ runSqlPool query pool
什麼是'let maybeUser = Nothing'在裏面?這是一個錯字嗎? – leighman
這是來自實驗的剩餘物:-)我只是再次測試它,它沒有這條線。 – ErikR
謝謝。實體數據構造函數是我一直在尋找的。 – leighman