Mongodb模式的不同types的post/文章
我正在开发一个Mongodb,Mongoose和Expressjs应用程序,其中有不同types的文章或post。 例如,有一个只包含URL或地址的URL发布,其中没有文本。 有普通的post,地图post,图片post和一堆其他types。
现在我想在我的应用程序中定义Post
的模式。 我有点困惑,如果我应该为每个定义不同的模式,因为他们应该有不同的属性和属性时,他们共享一些属性,或把Post
模式中的所有可能的属性,并使用type
的名称属性指定共享的post的types。
做这种事情的最佳做法是什么?
这取决于你的需求。 如果要在整个Post
集合上运行可能导致不同types的post的查询,则应该使用一个具有type
属性的公共模式。 如果不是这样,那就去分类collections,这样做会使系统清晰易懂。
如果你想使用一个集合,并且在每个模式中都有共同的属性,你应该尝试mongoose-schema-extend
包。 有了这个,你可以处理你的模式像类和做一个inheritance。
我会build议把所有的共同属性放在一个模式中,让你的post成为dynamictypes(例如你的post可以有图片以及文字和video)。 你可能会得到这样的结果:
post { (_)id : ..., user_id: ..., . . . }, post_images{ (_)id:..., post_id:..., uri:..., . . . }