Datomic - 自动收回缺少的组件实体

时间:2017-07-26 07:53:44

标签: datomic

我有一个嵌套结构(也可以深层嵌套)。所有嵌套实体都标记为组件。创作很好。

{:db/id (d/tempid :db.part/user)
 :tree/name "some tree"
 :tree/nodes [{:node/name "Node1"
               :node/prop "some prop"}
              {:node/name "Node2"
               :node/prop "another prop"}]}

让我们说上面的树是创建的。我拉它进行更新,它看起来像这样:

{:db/id 1
 :tree/name "some tree"
 :tree/nodes [{:db/id 2
               :node/name "Node1"
               :node/prop "some prop"}
              {:db/id 3
               :node/name "Node2"
               :node/prop "another prop"}]}

从UI中删除第一个节点:

{:db/id 1
 :tree/name "some tree"
 :tree/nodes [{:db/id 3
               :node/name "Node2"
               :node/prop "another prop"}]}

如何使用db / id 2自动删除节点?我唯一能想到的就是拉动节点并将它们与我提交的节点进行比较。因为结构可以更深入地嵌套,所以我需要递归遍历集合。有更自动的方法吗?

1 个答案:

答案 0 :(得分:1)

内置事务函数retractEntity将递归收回组件实体:

{{3}}