我正在使用 Scotty 和 PostgreSQL-simple 开发 Haskell API。我无法弄清楚如何插入包含文本数组的列。到目前为止,我的查询已经奏效,但是关于这个的一些问题似乎编译得不好。
这就是我所拥有的:
addOrder :: Postgres r m => OrderIntent -> m ()
addOrder param =
void . withConn $ \conn -> execute conn qry (orderIntentTable param, orderIntentItemsSlug param)
where
qry = "insert into orders (table, items, created_at, updated_at) values (?, ?, now(), now())"
我的 OrderIntent 及其 FromRow 是:
data OrderIntent = OrderIntent
{ orderIntentTable :: Integer
, orderIntentItemsSlug :: [Text]
} deriving(Eq, Show)
instance FromRow OrderIntent where
fromRow = OrderIntent
<$> field
<*> (fromPGArray <$> field)
我得到的错误是:
• Could not deduce (Database.PostgreSQL.Simple.ToField.ToField
[Data.Text.Internal.Text])
arising from a use of ‘execute’
from the context: Postgres r m
bound by the type signature for:
addOrder :: forall r (m :: * -> *).
Postgres r m =>
OrderIntent -> m ()
at Core/Order/DAO.hs:11:1-47
我不知道如何使用 PostgreSQL 库来解析文本数组,以便可以将我插入到数据库中。如果你们中的任何人可以帮助我,我将不胜感激!
PS:如果你碰巧知道 Scotty auth,我也有几天前的另一个拦截器。