尝试创建一个新属性,其中值是对同一实体的不同属性进行转换的结果。所以,假设我有一个数据库,其中每个实体都有属性:content
。我希望每个被调用的实体都有一个附加属性,:transformed
其值是将函数f
应用于:content
. 我将如何以惯用的方式有效地解决这个问题?当前尝试通过执行事务并将新属性的值分配给应用于查询该实体的原始属性值的函数的值来做到这一点。
如果不是很明显,我对 Datalog 和 Datascript 还很陌生
(doseq [included-block-ds-id (vec (ds/q '[:find ?id
:where
[?id :block/included true]]
@conn))]
(let [content (first (first (vec (ds/q '[:find ?content
:where
[?included-block-ds-id :block/content ?content]]
@conn))))]
(ds/transact! conn [[:db/add (first included-block-ds-id)
:block/hiccup (block-content->hiccup
conn
content)]])))