我正在开发Mongodb,Mongoose和Expressjs的应用程序,其中有不同类型的文章或帖子。例如,有一个URL帖子,其中只包含一个URL或地址,并且里面没有文字。有正常的帖子,地图帖子,图片帖子和其他类型的帖子。
现在我想在我的应用程序中定义Post
的模式。如果我应该为每个模式定义不同的模式,我会感到困惑,因为它们在共享某些属性时应该具有不同的属性和属性,或者将所有可能的属性放在Post
模式中并使用属性type
的名称,用于指定已共享的帖子类型。
做这种事的最佳做法是什么?
答案 0 :(得分:1)
这取决于您的需求。如果要对整个Post
集合运行可能导致不同类型的帖子的查询,则应使用一个具有type
属性的公共模式。如果没有,请使用单独的集合,这样可以使系统清晰易懂。
如果您考虑使用一个集合,并且每个模式中都有共同的属性,那么您应该尝试使用mongoose-schema-extend
包。有了它,您可以像处理类一样继承您的模式。
答案 1 :(得分:0)
我建议将所有常用属性放在一个架构中,让您的帖子为动态类型(例如,您的帖子可能包含图片以及文字和视频)。你最终可能得到这样的东西:
post {
(_)id : ...,
user_id: ...,
.
.
.
},
post_images{
(_)id:...,
post_id:...,
uri:...,
.
.
.
}