【问题标题】:Recursive menu with RavendbRavendb 的递归菜单
【发布时间】:2023-04-05 11:41:01
【问题描述】:

我似乎找不到可靠的答案。我是 Ravendb 的新手,因此我们将不胜感激任何帮助。我正在寻找建立一个递归菜单。最好的方法是什么?我查看了此提要RavenDb - Recursive queries/indexes, for Hierarchical Document,但找不到“推荐”解决方案。我是否只是将所有子文档作为非规范化数据存储在父文档中?我正在考虑存储文档/页面的 id 和文档/页面的“slug”。这似乎是可行的,因为这是我在构建菜单时需要的所有信息,但是如果页面标题发生变化会发生什么?然后我需要更改页面的 slug,这意味着我必须更新页面父级。如果页面被删除会怎样?我只是应用补丁吗?此方法与使用实时投影有何不同?如果有人使用 Ravendb 构建了一个模仿“最佳实践”的分层树应用程序,我将永远感激不尽。

谢谢

泰隆

【问题讨论】:

  • Tyrone,没有单一的“正确”和“最佳”解决方案可以做到这一点。有很多方法,例如将所有数据存储在单个文档中(取决于您将拥有的页数),使用类似于 Raven 的 Authorization Bundle 的方法来处理层次结构等。您能进一步解释一下您的内容吗?正在努力实现?
  • 嗨 Carlos,我只是想构建一个分层菜单,想知道什么是“最佳”或正确的方法?

标签: c# asp.net-mvc-3 nosql ravendb


【解决方案1】:

您是如何实施菜单的?您可能想看看这个Tree implementation 作为参考。

我会首先将整个菜单(您的树结构)数据作为单个文档存储在 RavenDB 中。

RavenDB 的客户端在缓存方面非常出色,因此即使您最终得到一个用于导航的大文档也不应该成为问题,因为它始终在内存中。

【讨论】:

  • 你在什么地方遇到过这样的例子吗?您是说我应该为我的所有页面及其字段使用一个文档,还是只使用一个文档对其原始文档(包括所有字段)进行规范化引用?
  • 嗨 Tyrone,我建议使用单个文档来存储菜单结构。每个菜单节点都会引用页面内容,因为每个页面都是一个文档。
猜你喜欢
  • 1970-01-01
  • 2015-04-07
  • 1970-01-01
  • 2013-11-05
  • 2013-06-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多