流星+;MongoDB:数据库模式
我是Meteor的新手,正在尝试找出如何最好地设计这个数据库来存储和发布数据。我认为使用这些软件包是有意义的: 我会在一页上列出一系列课程:流星+;MongoDB:数据库模式,mongodb,meteor,iron-router,simple-schema,Mongodb,Meteor,Iron Router,Simple Schema,我是Meteor的新手,正在尝试找出如何最好地设计这个数据库来存储和发布数据。我认为使用这些软件包是有意义的: 我会在一页上列出一系列课程: Courses = new Mongo.Collection("courses"); Courses.attachSchema(new SimpleSchema({ title: { type: String, label: "Title", max: 200 }, comingSoon: { type:
Courses = new Mongo.Collection("courses");
Courses.attachSchema(new SimpleSchema({
title: {
type: String,
label: "Title",
max: 200
},
comingSoon: {
type: boolean,
label: "Coming Soon?"
},
description: {
type: String,
label: "Course Description",
max: 200
}
}));
以及每门课程的课程集合:
Lessons = new Mongo.Collection("lessons");
Lessons.attachSchema(new SimpleSchema({
title: {
type: String,
label: "Title",
max: 200
},
video: {
type: String,
label: "Link to video"
},
}));
并且有一个管理页面,可以使用autoform软件包创建新的课程/课程
我的问题是如何将课程与相关课程联系起来?我会使用iron:router监听url中的参数,查询两个集合并创建模板布局吗?您应该有一个与课程/课程关系对应的字段,类似于传统数据库中的字段 例如:
Lessons.attachSchema(new SimpleSchema({
...
courseId: {type: String}, // ID of the corresponding course
}));
或:
您应该有一个与课程/课程关系对应的字段,类似于传统数据库中的字段 例如:
Lessons.attachSchema(new SimpleSchema({
...
courseId: {type: String}, // ID of the corresponding course
}));
或:
mongodb推荐使用的模式是在数据库中进行非规范化 它的意思很简单,就是您没有任何
relational
db模式。在SQL中,您有关系数据库范例,要获取详细数据,您需要使用表进行Join
。在mongodb中,将整个对象放在这里,而不是将引用放在文档(行)中。所以实际上没有join
在你的课程模式中,你可以这样做
Schemas.Course=newsimpleschema(…)代码>
如果您真的想以SQL方式使用数据库
,有一个方便的包[publish composite][1]
,它将帮助您加入(人工)
您的表/集合。mongodb推荐的模式是在数据库中进行非规范化
它的意思很简单,就是您没有任何relational
db模式。在SQL中,您有关系数据库范例,要获取详细数据,您需要使用表进行Join
。在mongodb中,将整个对象放在这里,而不是将引用放在文档(行)中。所以实际上没有join
在你的课程模式中,你可以这样做
Schemas.Course=newsimpleschema(…)代码>
如果您真的想以SQL方式使用数据库
,有一个方便的软件包[publish composite][1]
,它将帮助您加入(人工)
您的表/集合
course: {
type: Schemas.Course
}