我有一个嵌套的结构(也可以是深度嵌套的)。所有嵌套的实体都被标记为组件。Creation运行得很好。
{: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的节点?我唯一能想到的就是拉出节点,并将它们与我提交的节点进行比较。因为这个结构可以嵌套得更深,所以我需要递归地遍历集合。有没有一种更自动的方法来做这件事?
发布于 2017-07-26 21:05:48
内置的事务函数retractEntity将递归地收回组件实体:
http://docs.datomic.com/transactions.html#dbfn-retractentity
https://stackoverflow.com/questions/45320708
复制相似问题