我有一个数据类型

data Reading = Reading
  { title :: String
  , authors :: Vector String
  , startDate :: Day
  , endDate :: Maybe Day
  }
  deriving (Eq, Show, Generic, FromRow, ...)

我希望能够在POST端点为表单创建

    :<|> "reading" :> ReqBody '[FormUrlEncoded] Reading :> Post '[HTML] Reading

为此,我需要为Reading派生一个FromForm实例.问题是没有实例FromHttpApiData (Vector String).似乎确实有一个[String]的例子.我 Select 了Vector String,这样我也可以派生FromRow,这允许我使用PostgreSQL-Simple自然地提取记录.

那么,有没有一种类型可以用于authors字段,以同时派生FromRowFromForm呢?我确实花了相当多的时间在文档中进行试验,但都无济于事.或者,也许我应该考虑定义一个定制实例,或者根据用例对authors的类型进行参数化?

推荐答案

看起来确实没有机制来推导出VectorFromForm个实例.

我将手动定义该实例:

instance FromForm Reading where
  fromForm f =
    Reading
      <$> parseUnique "title" f
      <*> (fromList <$> parseAll "authors" f)
      <*> parseUnique "startDate" f
      <*> parseMaybe "endDate" f

Postgresql相关问答推荐

PostgreSQL数据文件是否仅在判断点期间写入磁盘?

org.postgresql. util.PSQLException:使用docker + docker—compose + kafka + springboot时try 连接失败

分区可以用于postgres中的同类查询吗?

PostgreSQL\d命令:有办法只 Select 一列吗?

使函数内部动态插入更具可读性

忽略 split_part 的第 n 个分隔符之后

PostgreSQL SELECT 结果具有不同的 id,它更喜欢来自另一个表的特定值

查找最小值和最大值

Rails:安装 pg gem 时出错

如何在 PostgreSQL 中截断日期?

Nodejs应用程序的node-postgres vs pg-promise

brew 程序更新恼人的错误信息

PostgreSQL INSERT 插入一个枚举数组

Rails 3:在 Postgres 支持的 ActiveRecord 中使用 json 作为列类型时出现迁移错误

如何使用 postgresql 中的存储过程将数据插入表中

docker postgres 无法从指定端口启动

在 Postgres 中显示关系、序列和函数的默认访问权限

Postgres Hstore 与 Redis - 性能方面

如何在postgresql中编写关于最大行数的约束?

PostgreSQL - GROUP BY 子句或用于聚合函数