1
A
回答
2
Datomic pull表達式支持反向屬性導航。假設你的模式是這樣的:
(d/transact conn [{:db/id (d/tempid :db.part/db)
:db/ident :node/children
:db/valueType :db.type/ref
:db/cardinality :db.cardinality/many
:db.install/_attribute :db.part/db}])
要創建樹:
(defn node [name & children]
(cond-> {:db/id (d/tempid :db.part/user)
:db/doc name}
children (assoc :node/children children)))
(d/transact conn [(node "L1"
(node "L1.1"
(node "L1.1.1")
(node "L1.1.2"))
(node "L1.2"
(node "L1.2.1")))])
使用查詢拉組件父母遞歸(注意 「_children」):
(d/q '[:find (pull ?e [:db/doc {:node/_children ...}]) .
:where [?e :db/doc "L1.2.1"]]
(d/db conn))
=> {:db/doc「L1.2.1」,:node/_children [{:db/doc「L1.2」,:node/_children [{:db/doc「L1」}]}]}
相關問題
- 1. Angular2:從孩子送到一個以上的事件父組件
- 2. Reactjs:是否可以使用另一個父組件的父組件屬性
- 3. 解組器可以解組一個http實體到一個映射[String,AnyRef]
- 4. 我可以從另一個組件安裝Joomla組件
- 5. Angular 2 - 我需要一個組件來輸出一個函數,以便嵌套組件可以調用它。
- 6. 發送一個動作從一個子組件到Ember 2.2中的父組件
- 7. 如何禁用uipickerview中的一個組件直到選中另一個組件
- 8. 用戶控件一直放在窗體上一直拉伸
- 9. 上樹組件
- 10. 你可以做一個maven插件拉到另一個插件?
- 11. 是否可以綁定到屬性上一個組件
- 12. SCSS選擇,我可以得到一個榆樹在父
- 13. ngOnInit不運行,直到後,我轉到另一個組件
- 14. 我如何獲得一個數組到另一個函數,所以我可以顯示它到另一個div
- 15. 我可以使我的MXML組件成爲一個Singleton嗎?
- 16. 得到一組實體
- 17. React js:我可以將數據從一個組件傳遞到另一個組件嗎?
- 18. 從父模塊的另一個組件包裝角2組件
- 19. 從一個組件到另一個組件中的角4
- 20. 從一個組件到另一個組件的訪問變量
- 21. 如何測試一個React組件,該組件在它的父級上調用一個函數,這會改變組件上的道具?
- 22. GMF - 建模一個類,它可以包含自己的一個組件
- 23. (數據庫)2個弱實體可以組成一個關聯實體嗎?
- 24. 捆綁實體列表到一個組件
- 25. 我可以從一個子域名訪問文件到父域?
- 26. 組件的整體實現可以分爲兩個對象嗎?
- 27. ECS-實體可以有多個給定類型的組件
- 28. 我可以直接寫一個matlab補丁到文件
- 29. 多個ClientSocket組件可以放在一個表單上嗎?
- 30. 可以將azure web角色實例化一個activeX組件?
爲你的答案。這隻有在兒童具有相同實體類型時纔有可能?如果你在嵌套中有不同的類型,你需要有多個嵌套的pulls? – stuartrexking
Datomic不強加「類型」的概念(如關係數據庫中的表)。只要存在相同的關係屬性(在本例中爲node/children),遞歸語法就會將所有相關實體拉出(或者如果您指出了這一點,則達到某個級別)。 – rmcv
謝謝。根據你的回答和評論,我添加了一個適用於我的例子。 – stuartrexking