Yesod 从 hamlet 访问持久实体 ID

Yesod accessing a persistent entity id from hamlet

我目前一直坚持从数据库中提取产品列表并将它们显示在屏幕上。我想使用数据库中的 Id 将有关这些产品的一些信息存储在 cookie 中,并 link 到更详细的信息页面。据我了解,ID 仅存在于持久实体中,而不存在于实际的产品类型中?这是否意味着我应该存储一个带有随机字符串的附加字段,我可以在 cookie 中使用它,或者有没有办法访问数据库中使用的 id?我将使用 JavaScript.

添加 cookie

到目前为止,我只使用了 PHP,为此我会使用 ID。由于类型安全,我不确定这在 Yesod 中是否相同,或者是否有最佳实践方法来做到这一点。

如果您想获取处理程序中记录实体的 ID,请执行以下操作:

(Entity key _) <- runDB $ getBy ...

不使用 id 获取值的查询(例如:get)将 return 包含 id 和值的实体。

参见: http://www.yesodweb.com/book/persistent#persistent_fetching_by_unique_constraint

你可以看到 getBy returns a (Entity personId person) 包裹在一个 maybe 中 这也适用于 selectList