gpt4 book ai didi

haskell - Yesod:通过 ID 从 Int 获取数据库实体

转载 作者:行者123 更新时间:2023-12-03 07:50:54 24 4
gpt4 key购买 nike

我是 Haskell 和 Yesod 的新手,我正在尝试构建一个简单的 Web 应用程序,可以回答来自外部 API 的查询。我已经构建了一个解析器(使用 Parsec),它可以获取我想要作为常规 Int 值加载的实体的 ID。

但是,我这辈子都不知道如何把这个 Int 变成 get 的东西。将接受(即 Key (?))。文档中的所有示例仅从以前的插入或 url 调度中获取 id。

任何帮助将不胜感激,因为我似乎被卡住了...... :)

最佳答案

即使已经可以在评论中找到答案,我还是想举一个完整的例子。

假设我们有一个 Person模型,以下函数返回具有给定 ID 的人员的记录(如果存在):

import Database.Persist.Types (PersistValue(PersistInt64))

getByIntId :: Integral i => i -> Handler (Maybe Person)
getByIntId i = runDB $ get $ Key $ PersistInt64 (fromIntegral i)
import需要让我们构造一个整数的持久版本。 fromIntegral将任何整数转换为预期类型 Int64 .

更新 : 从 Yesod 1.2 PersistValue住在模块 Database.Persist.Types ,在 1.2 之前是 Database.Persist.Store ( API Documentation)。

更新 2 : 从 Persistent 2.0.2 开始,有两个内置函数可以在数据库键之间进行转换: toSqlKeyfromSqlKey ( API Documentation ,参见 answer by hhefesto 示例)。

关于haskell - Yesod:通过 ID 从 Int 获取数据库实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8639414/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com