【发布时间】:2014-03-30 06:16:17
【问题描述】:
对于这样的数据类型
data Tree = Node String Tree Tree
| Leaf String
还有像这样的真实数据
my_tree = (Node "first node" (Leaf "leaf") (Node "second node" (Leaf "leaf") (Leaf "leaf")))
如何使用持久性将其存储到数据库中,特别是如何执行“OR”部分?
我试过这样定义模型
share [mkPersist sqlSettings, mkMigrate "migrateAll"] [persistLowerCase|
Tree
value String
leftTree Leaf
rightTree Leaf
deriving Show
Leaf
value String
deriving Show
|]
递归结构会自动作为json字符串存储在一行中的列中,这非常好。但是我们如何或者可以在持久模型中定义一个“OR”结构呢?
【问题讨论】:
-
如果您的问题需要存储如此复杂的数据,也许使用酸态会更方便?
-
同上。我正在尝试将reffit 从酸状态迁移到持久以节省内存。作为 SQL 的新手,我对实际进入数据库的类型的紧缩感到惊讶。我不得不把我所有的列表类型的记录字段都“翻过来”。
标签: haskell yesod persistent