2017-06-04 19 views
1

我發展與MongoDB中,貓鼬和Expressjs其中有文章或不同類型的職位申請。例如,網址發佈只包含網址或地址,並且沒有文字。有普通的帖子,地圖帖子,圖片帖子和一堆其他類型。MongoDB的架構爲不同類型的帖子/文章

現在,我想在我的應用程序定義的Post S上的架構。我有點糊塗了,如果我要爲每個被這些定義不同的模式,因爲他們應該有不同的屬性,當他們共享一些特性,或者把Post架構內的所有可能的屬性和使用屬性與type的名稱屬性指定已共享的帖子的類型。

什麼是做這種事的最佳做法?

回答

1

這取決於您的需求。如果您希望在整個Post集合上運行查詢,這會導致不同類型的帖子,您應該使用一個具有type屬性的公共架構。如果不是,請使用單獨的集合,這使得系統清晰易懂。

如果你想使用一個集合的並有在每個模式共同屬性你應該嘗試mongoose-schema-extend包。有了這個,你可以處理你的模式像類和做繼承。

https://github.com/briankircho/mongoose-schema-extend

0

我建議把所有公共屬性的一個模式,讓你的職位是動態型的(例如,您的帖子可能有圖像以及文本和視頻)。而你最終可能會以這樣的:

post { 
    (_)id : ..., 
    user_id: ..., 
    . 
    . 
    . 
}, 
post_images{ 
    (_)id:..., 
    post_id:..., 
    uri:..., 
    . 
    . 
    . 
} 
相關問題