2011-12-05 100 views
0

我似乎無法找到一個堅實的答案。談到Ravendb,我是一個新手,所以任何幫助都將非常感謝。我正在尋找建立一個遞歸菜單。什麼是最好的方法來做到這一點?我查看了此供稿RavenDb - Recursive queries/indexes, for Hierarchical Document,無法找到「推薦」解決方案。我是否將所有子文檔作爲非規範化數據存儲在父文檔中?我正在考慮存儲文檔/頁面的ID,以及文檔/頁面'slug'。這似乎是可行的,因爲這是構建菜單時我需要的所有信息,但如果頁面標題更改會發生什麼情況?然後,我需要更改頁面的slu which,這意味着我將不得不更新父頁面。如果頁面被刪除,會發生什麼?我只是申請一個補丁?這種方法與使用實時投影有什麼不同?如果有人可能使用Ravendb構建了一個層次樹應用程序,它模仿「最佳實踐」,我會永遠感激。Ravendb遞歸菜單

感謝

泰隆

+0

泰隆,沒有一個「正確」和「最佳」的解決方案。有相當多的方法,像使用類似於Raven的[Authorization Bundle](http://ravendb.net/bundles/authorization)的方式將所有數據存儲在單個文檔中(具體取決於您將擁有的頁面數量)處理層次結構等。你能否進一步解釋你想要達到的目標? –

+0

嗨,卡洛斯,我只是試圖建立一個層次菜單,並想知道什麼被認爲是「最好的」或正確的方式來做到這一點? – TYRONEMICHAEL

回答

0

你是如何實現菜單?你可能想看看這個Tree implementation作爲參考。

我將首先將整個Menu(您的樹結構)數據作爲單個文檔存儲在RavenDB中。

RavenDB的客戶端在緩存方面非常出色,所以即使最終導入一個大的文檔導航應該不會成爲問題,因爲它始終在內存中。

+0

你有沒有遇到過這個地方的例子?你是說我應該使用一個單一的文件爲我的所有網頁與他們的領域,或者只是使用一個單一的文件與規範化引用其原始文件,其中包括所有領域? – TYRONEMICHAEL

+0

嗨泰隆,我建議單個文件來存儲菜單結構。每個菜單節點都有一個對頁面內容的引用,因爲每個頁面都是一個文檔。 –