如何将文档插入mongoose中的2个集合?
我有2个集合(员工、HRM员工) 员工模式为:如何将文档插入mongoose中的2个集合?,mongoose,collections,insert,updates,Mongoose,Collections,Insert,Updates,我有2个集合(员工、HRM员工) 员工模式为: var EmployeeSchema = new Schema({ name: String, code: String, //unique age : number, phoneNumber: number, }); var HrmEmployeeSchema = new Schema({ name: String, code: String, //unique age : num
var EmployeeSchema = new Schema({
name: String,
code: String, //unique
age : number,
phoneNumber: number,
});
var HrmEmployeeSchema = new Schema({
name: String,
code: String, //unique
age : number,
phoneNumber: number,
address: String,
startDateWork: date,
organization : String
});
hrmEmployee架构是:
var EmployeeSchema = new Schema({
name: String,
code: String, //unique
age : number,
phoneNumber: number,
});
var HrmEmployeeSchema = new Schema({
name: String,
code: String, //unique
age : number,
phoneNumber: number,
address: String,
startDateWork: date,
organization : String
});
HRMEMemployee是一个用于扩展员工信息的集合。我希望在创建员工时,同时创建hrmEmployee。以下是我的解决方案:
var data ={
name: "test001",
code: "A01",
age : 20,
phoneNumber : 123123123
}
var employee = new Employee(data);
employee
.save()
.then( result => {
if(result){
var hrmEmployee = new HrmEmployee(data)
hrmEmployee.save()
}
}).catch( err => console.log(err))
有谁有更好的解决方案吗?您可能可以使用异步等待语法来提高代码的可读性
async function saveEmployee() {
try {
const data = {
name: "test001",
code: "A01",
age : 20,
phoneNumber : 123123123
};
const employee = new Employee(data);
await employee.save();
const hrmEmployee = new HrmEmployee(data)
await hrmEmployee.save();
} catch (err) {
console.log(err);
}
}
此外,在两个不同的文档中复制相同的信息并不理想,因为在更新信息时,您必须始终保持两个文档的同步。更好的方法是在hrmEmployee模式中引用employee文档id,并在hrmEmployee中添加额外的字段
var HrmEmployeeSchema = new Schema({
employeeId: {
type: ObjectId,
ref: "Employee"
},
address: String,
startDateWork: date,
organization : String
});
这样说,如果要确保两个文档总是被创建,则应该考虑使用MangGDB事务来确保跨集合的原子性。您可以在此处阅读更多有关事务的信息-