我正在使用node.js,express和mongodb与mongoose构建一个ReSTful api。关于mongodb,我有两个关于ReSTful最佳实践的问题:
var sectionSchema = new Schema({
name: { type: String },
pages: { type: [Schema.Types.ObjectId], ref: 'Page' }
});
var chapterSchema = new Schema({
name: { type: String },
sections: [sectionSchema]
});
现在每个部分的内容都无关紧要。我的问题是,在我的场景中创建一个控制器或一组路由来获取/更新单个section元素是否合理。我的直觉是,我会破坏某种Restful api最佳实践,
but perhaps not。在我的案例中,数据访问经常需要从章节集合中的sections数组中获取和更新单个section元素。
var pageSchema = new Schema({
chapterId: { type: Schema.Types.ObjectId },
name: { type: String },
text: { type: String }
});
我可以通过两个控制器(章节和页面)完成所有这些并且没有连接,只需从客户端多次调用获取引用的资源,但这需要更多的api消费者,更多的请求超过电线和可能更多的数据库命中。
如果您想知道为什么我在每个页面文档中都有一个chapterId,因为一个页面属于一个章节,并且在将其推送到某个部分的页面之前被取消分配。它也是一种快速简便的方法,可以让所有页面都属于一个章节而无需查询2个集合。随意评论我的设计的这个方面。页面也需要自己的集合,因为1.个别页面经常被访问,2页面可能会变得相当庞大和繁琐。
大多数情况下,我使用这个项目作为node.js / mongodb世界和Web编程的一般介绍。提前谢谢!