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. 用户控件一直放在窗体上一直拉伸
- 6. 你可以做一个maven插件拉到另一个插件?
- 7. ngOnInit不运行,直到后,我转到另一个组件
- 8. 我如何获得一个数组到另一个函数,所以我可以显示它到另一个div
- 9. 得到一组实体
- 10. 我可以使我的MXML组件成为一个Singleton吗?
- 11. 从父模块的另一个组件包装角2组件
- 12. React js:我可以将数据从一个组件传递到另一个组件吗?
- 13. 从一个组件到另一个组件中的角4
- 14. 从一个组件到另一个组件的访问变量
- 15. 捆绑实体列表到一个组件
- 16. 我可以从一个子域名访问文件到父域?
- 17. 组件的整体实现可以分为两个对象吗?
- 18. 我可以直接写一个matlab补丁到文件
- 19. 在父组件中创建并返回一个新组件
- 20. 隐藏父反应组件,当你点击一个子组件
- 21. 多个ClientSocket组件可以放在一个表单上吗?
- 22. 可以将azure web角色实例化一个activeX组件?
- 23. 将值从一个组件传递到另一个组件
- 24. 灰烬JS:从一个组件到另一个数据组件
- 25. 将数据从一个组件传递到另一个组件
- 26. Angular 2 - 从父组件的“第一个子组件”到“第二个子组件”的路由
- 27. 我们有一个Joomla组件,可以压缩很多组件并安装它们
- 28. 挠曲一个树组件上显示的支链XML
- 29. 父组件可以显示子组件状态吗?
- 30. 是否可以通过将组件包装到另一个组件中来更改组件的呈现输出?
为你的答案。这只有在儿童具有相同实体类型时才有可能?如果你在嵌套中有不同的类型,你需要有多个嵌套的pulls? – stuartrexking
Datomic不强加“类型”的概念(如关系数据库中的表)。只要存在相同的关系属性(在本例中为node/children),递归语法就会将所有相关实体拉出(或者如果您指出了这一点,则达到某个级别)。 – rmcv
谢谢。根据你的回答和评论,我添加了一个适用于我的例子。 – stuartrexking