Meteor + MongoDB: 数据库模式
Meteor + MongoDB: Database pattern
我是 Meteor 的新手,正在尝试弄清楚如何最好地设计这个数据库来存储和发布数据。我认为使用这些包是有意义的:
https://github.com/aldeed/meteor-autoform
https://github.com/aldeed/meteor-simple-schema
https://github.com/iron-meteor/iron-router
我有一个要在页面上列出的课程列表的集合:
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"
},
}));
并有一个管理页面来创建新的 courses/lessons 使用 autoform 包。
我的问题是如何将我的link课程关联到课程中呢?我会使用 iron:router 来监听 url 中的参数并查询两个集合并创建模板布局吗?
您应该有一个与课程/课程关系对应的字段,类似于传统数据库。
例如:
Lessons.attachSchema(new SimpleSchema({
...
courseId: {type: String}, // ID of the corresponding course
}));
或:
Courses.attachSchema(new SimpleSchema({
...
lessonIds: {type: [String]}, // Array of IDs of lessons
}));
用于 mongodb 的推荐模式是在您的数据库中进行反规范化。
这意味着您没有任何 relational
数据库模式。在 SQL 中,您拥有关系数据库范式,要获取详细数据,您需要对表进行 Join
操作。在 mongodb 中,不是将引用放在文档(行)中,而是将整个对象放在此处。所以实际上没有join
。
所以在你的课程架构中你可以这样做,
Schemas.Course = new SimpleSchema(...);
course: {
type: Schemas.Course
}
如果您真的想在 SQL way
中使用您的数据库,可以使用方便的软件包 [publish composite][1]
来帮助您 join (artificially)
您的 tables/collections.
我是 Meteor 的新手,正在尝试弄清楚如何最好地设计这个数据库来存储和发布数据。我认为使用这些包是有意义的:
https://github.com/aldeed/meteor-autoform
https://github.com/aldeed/meteor-simple-schema
https://github.com/iron-meteor/iron-router
我有一个要在页面上列出的课程列表的集合:
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"
},
}));
并有一个管理页面来创建新的 courses/lessons 使用 autoform 包。
我的问题是如何将我的link课程关联到课程中呢?我会使用 iron:router 来监听 url 中的参数并查询两个集合并创建模板布局吗?
您应该有一个与课程/课程关系对应的字段,类似于传统数据库。
例如:
Lessons.attachSchema(new SimpleSchema({
...
courseId: {type: String}, // ID of the corresponding course
}));
或:
Courses.attachSchema(new SimpleSchema({
...
lessonIds: {type: [String]}, // Array of IDs of lessons
}));
用于 mongodb 的推荐模式是在您的数据库中进行反规范化。
这意味着您没有任何 relational
数据库模式。在 SQL 中,您拥有关系数据库范式,要获取详细数据,您需要对表进行 Join
操作。在 mongodb 中,不是将引用放在文档(行)中,而是将整个对象放在此处。所以实际上没有join
。
所以在你的课程架构中你可以这样做,
Schemas.Course = new SimpleSchema(...);
course: {
type: Schemas.Course
}
如果您真的想在 SQL way
中使用您的数据库,可以使用方便的软件包 [publish composite][1]
来帮助您 join (artificially)
您的 tables/collections.