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。

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

我会build议把所有的共同属性放在一个模式中,让你的post成为dynamictypes(例如你的post可以有图片以及文字和video)。 你可能会得到这样的结果:

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