在一个新项目中,我从MySQL开始,但我想将其转换为mongodb / moongoose。
我在这里的痛苦在于我在MySQL中有不同的关系。
F.x。我有用户表
uid | firstname | lastname | email我可以住在
hid | address | zipcode | city | ownerid其中ownerid是users表中的用户
我有点不确定我应该如何在mongoose中设计我的模式,以便有一个有点像MySQL的选项。
我当前的用户模式是这样的
const userSchema = new mongoose.Schema({
firstname: String,
lastname: String,
email: String,
phone: Number,
password: String,
address: String,
zipcode: Number,
city: String,
bankname: String,
bankregno: Number,
bankaccno: Number,
userconfirmed: Boolean,
confirmtoken: String,
resettoken: String,
resettokenexpires: Date,
acceptmarketing: Boolean,
lastloggedin: Date,
disabled: Boolean
})发布于 2019-09-13 17:16:06
您可以为userSchema中的房屋数组添加一个字段,以将其拆分并允许一对多关系。您可以使用subdocuments来完成此操作。
这可能看起来像这样。
const houseSchema = new mongoose.Schema({
address: String,
zipcode: Number,
city: String,
})
const userSchema = new mongoose.Schema({
firstname: String,
lastname: String,
email: String,
phone: Number,
password: String,
bankname: String,
bankregno: Number,
bankaccno: Number,
userconfirmed: Boolean,
confirmtoken: String,
resettoken: String,
resettokenexpires: Date,
acceptmarketing: Boolean,
lastloggedin: Date,
disabled: Boolean,
houses: [houseSchema],
})发布于 2019-09-13 17:16:35
您可以使用mongoose populate,如下所示
const User = new mongoose.Schema({
House: { type: mongoose.Types.Schema.ObjectId, ref: "House" }
});
const House = new mongoose.Schema({
Number,
Road: String
});
(async () => {
const users = await User.find({}).populate("House");
// users = [
// {
// _id: 373890hfjklfhjkfh,
// House: {
// _id: dhkdhdlhjkld,
// Number: 378930,
// Road: fhjdlhdjkld
// }
// }
// ]
})();发布于 2019-09-13 18:47:19
如果您希望将这两个模式关联起来,这可能会对您有所帮助。如果您想了解更多信息,请访问https://mongoosejs.com/docs/2.7.x/docs/populate.html
const User = mongoose.model('User', new mongoose.Schema({
firstname: {
type: String,
},
lastname: {
type: String,
},
email: {
type: String
}
}));
const Address = mongoose.model('Address', new mongoose.Schema({
owner: {
type: Schema.Types.ObjectId,
ref: 'User'
}
//rest of your address schema
}))https://stackoverflow.com/questions/57920512
复制相似问题