我最近开始在我的新的Node.js应用程序中使用mongoDB和mongoose。以前只使用过关系型数据库,现在我正在努力适应mongoDB/noSQL的思维方式,如去规范化和缺乏外键关系。我有这个关系型数据库设计:
**Users Table**
user_id
username
email
password
**Games Table**
game_id
game_name
**Lobbies Table**
lobby_id
game_id
lobby_name
**Scores Table**
user_id
game_id
score
每个大厅属于一款游戏,多个大厅可以属于同一款游戏。用户还有不同的游戏得分。对于我的用户架构,到目前为止我有以下内容:
var UserSchema = new mongoose.Schema({
username: {
type: String,
index: true,
required: true,
unique: true
},
email: {
type: String,
required: true
},
password: {
type: String,
required: true
}
});
我的问题是,我应该如何将关系型设计转换为mongoDB/mongoose的模式?谢谢!
编辑 1
我已经尝试创建所有的模式,但我不知道这是否是正确的方法。
var UserSchema = new mongoose.Schema({
_id: Number,
username: {
type: String,
index: true,
required: true,
unique: true
},
email: {
type: String,
required: true
},
password: {
type: String,
required: true
},
scores: [{ type: Schema.Types.ObjectId, ref: 'Score' }]
});
var GameSchema = new mongoose.Schema({
_id: Number,
name: String
});
var LobbySchema = new mongoose.Schema({
_id: Number,
_game: { type: Number, ref: 'Game' },
name: String
});
var ScoreSchema = new mongoose.Schema({
_user : { type: Number, ref: 'User' },
_game : { type: Number, ref: 'Game' },
score: Number
});