针对不同类型的帖子/文章的Mongodb架构

时间:2017-06-04 07:23:27

标签: node.js mongodb database-design mongoose mongoose-schema

我正在开发Mongodb,Mongoose和Expressjs的应用程序,其中有不同类型的文章或帖子。例如,有一个URL帖子,其中只包含一个URL或地址,并且里面没有文字。有正常的帖子,地图帖子,图片帖子和其他类型的帖子。

现在我想在我的应用程序中定义Post的模式。如果我应该为每个模式定义不同的模式,我会感到困惑,因为它们在共享某些属性时应该具有不同的属性和属性,或者将所有可能的属性放在Post模式中并使用属性type的名称,用于指定已共享的帖子类型。

做这种事的最佳做法是什么?

2 个答案:

答案 0 :(得分:1)

这取决于您的需求。如果要对整个Post集合运行可能导致不同类型的帖子的查询,则应使用一个具有type属性的公共模式。如果没有,请使用单独的集合,这样可以使系统清晰易懂。

如果您考虑使用一个集合,并且每个模式中都有共同的属性,那么您应该尝试使用mongoose-schema-extend包。有了它,您可以像处理类一样继承您的模式。

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

答案 1 :(得分:0)

我建议将所有常用属性放在一个架构中,让您的帖子为动态类型(例如,您的帖子可能包含图片以及文字和视频)。你最终可能得到这样的东西:

post {
  (_)id : ...,
  user_id: ...,
  .
  .
  .
},
post_images{
  (_)id:...,
  post_id:...,
  uri:...,
  .
  .
  .
}