这是设计mongodb模式的最佳方式吗



我对编程还很陌生,现在正处于开始申请工作之前从事项目的阶段。我正在做一个express项目,想要一些关于我的模式设计的建议,以防我以一种可怕的方式做事。

该项目的前提是一个桌面预订应用程序。业务管理员可以创建一个帐户来注册公司,并在需要时添加多个办公室。员工还可以使用唯一的公司代码和密码注册为公司员工,然后在不同的办公室预订办公桌。

这是我设计的模式,我以这种方式对数据进行了建模,因为我希望能够以不同的方式访问数据,例如员工查看他们的所有预订,以及雇主查看办公室的所有预订。

如有任何反馈,我们将不胜感激!提前谢谢。

注意:在构建项目时,我会将每个模式放在不同的文件中,我知道我还没有需要所有需要的依赖项。这个问题的目的纯粹是关于猫鼬模式设计的最佳实践。

const mongoose = require('mongoose')
const Schema = mongoose.Schema
const CompanySchema = new Schema({
companyName: String,
companyLogo: String,
uniqueCompanyCode: String,
companyPasscode: String,
companyAdmin: [
{
type: Schema.Types.ObjectId,
ref: "User"
}
],
offices: [
{
type: Schema.Types.ObjectId,
ref: 'Office'
}
],
})
const UserSchema = new Schema({
username: {
type: String,
required: true,
unique: true
},
email: {
type: String,
required: true,
unique: true
},
bookings: [
{
type: Schema.Types.ObjectId,
ref: 'Booking'
}
]
})
UserSchema.plugin(passportLocalMongoose);
const OfficeSchema = new Schema({
officeAddress:{
streetAddress: String,
town: String,
county: String,
postcode: String
},
floorPlan: String,
desks: [
{
deskNumber: Number,
bookings:{
type: Schema.Types.ObjectId,
ref: 'Booking'
}
}
]
})
const bookingSchema = new Schema({
bookedFrom: Date,
bookedTo: Date,
bookedBy: {
type: Schema.Types.ObjectId,
ref: "User"
}
})

如果你使用Node.js的架构,MongoDB和mongoose,你会在每个项目开始时创建这些模式,所以最好熟悉它们。

这就是我们在猫鼬中创建模式的方式。

const mongoose = require("mongoose");
const Schema = mongoose.Schema;
let productSchema = new Schema({
name: {
type:String,
required:true
},
price: {
type:Number,
required:true
},
isAvailable: {
type:Boolean
}
});
const productModel = mongoose.model("product", productSchema);
module.exports = productModel;    

mongoose.model的第一个参数是将包含文档的集合的名称。第二个参数是架构。现在,我们需要的是导出productModel,以便它们可以在其他地方使用。

const productModel = mongoose.model("product", productSchema);

此productModel已准备好导入,并用于在产品集合中按照我们的架构创建数据。这是使用Node.js和MongoDB时常见的开发模式。类似ODM的猫鼬使管理数据更加直观。

最新更新