2017-07-26 8 views
0

入れ子構造(深く入れ子にすることもできます)があります。ネストされたエンティティはすべてコンポーネントとしてマークされます。創造はうまくいく。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 3 
       :node/name "Node2" 
       :node/prop "another prop"}]} 

どのように私は、自動的にDB/IDが2のノードを削除するには:私は最初のノードを削除するUIから

{: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"}]} 

?私が考えることができるのは、ノードを引っ張って、それらを私が提出しているノードと比較することだけです。構造体をより深くネストすることができるので、コレクションを再帰的にトラバースする必要があります。これを行うための自動化された方法がありますか?

答えて

1

内蔵のトランザクション機能retractEntityは、再帰的にコンポーネントエンティティを撤回します:

http://docs.datomic.com/transactions.html#dbfn-retractentity

+1

これは再帰、感謝を解決します。しかし、私はまだ最初のレベルのノードを手動で比較する必要があります。私は正直なところ、もっと自動化されたものを求めていました。 – Unknown

関連する問題