【发布时间】:2019-06-06 15:28:08
【问题描述】:
我有一个表单,我将其内容分成两个 mongodb 架构
我想直接在 mongoose 模式挂钩中读取 node.js/express.js 中的变量 通过模式的 pre 或 post 钩子。这些是我的文件
express.js
var firstName = req.body.first_name;
var lastName = req.body.last_name;
var fullName = firstName+' '+lastName;
var employmentDate = req.body.employment_date;
var responsibility = req.body.responsibility;
userschema.full_name = fullName;
userschema.first_name = firstName;
userschema.last_name = lastName;
userschema.save(function (err, result){
});
/******************express UPDATE START**********/
user = new userschema(req.body)
employment = new employmentObject(req.body)
employment.employment_date= employmentDate;
employment.responsibility= responsibility;
/******************express UPDATE ENDS**********/
Schema.js
var userSchema = mongoose.Schema({
full_name : String,
other_name : String,
last_name : String,
email : String
});
userSchema.pre('save', function (){
//obtain values from form field
var field1 = employmentDate;
var field2 = responsibility;
const employmentObject = this.model('employment-detail');
/******************schema UPDATE START**********/
var emp_Date = employmentObject.employment_date;
var duties = employmentObject.responsibility;
/******************schema UPDATE ENDS**********/
employmentObjectins = new employmentObject({
'employment_date': formField1,
'responsibility' :formField2
});
employmentObjectins.save(function (err){
if(err){
console.log(err+' error saving object');
}
else{
console.log('no error in saving object');
}
});
});
这是刚刚总结的内容,比这个还长。但这是主要概念。 主要领域是将 express.js 内容放入模型的架构中
更新
employmentDate 和责任不在 userSchema 中,但在employmentSchema 中 如何获取不在 userSchema (主模式)中但在就业模式中的字段 (第二种模式)
第二次更新
通过上面的修改,它会产生错误 ParallelSaveError:无法并行保存()同一个文档。文件:
我做错了什么
第三次更新
当我根据你所说的进行修改时,我发现当我有两个模型时 在 express.js 中声明了它们的模型字段/变量,我将第二个模型称为 第一个模型的预钩它给了我这个错误 不能同时保存()同一个文档多次。
修改代码后。这些是存在的文件
Express.js
var firstName = req.body.first_name;
var lastName = req.body.last_name;
var fullName = firstName+' '+lastName;
var employmentDate = req.body.employment_date;
var responsibility = req.body.responsibility;
userschema.full_name = fullName;
userschema.first_name = firstName;
userschema.last_name = lastName;
userschema.save(function (err, result){
});
employment.employment_date= employmentDate; <---
employment.responsibility= responsibility; <---
//I believe that I would need to declared this in order to use it in the schema
user = new userschema(req.body)
employment = new employmentObject(req.body)
userschema.js
var userSchema = mongoose.Schema({
full_name : String,
other_name : String,
last_name : String,
email : String
});
userSchema.pre('save', function (){
//obtain values from form field
var field1 = employmentDate;
var field2 = responsibility;
const employmentObject = this.model('employment-detail');
var emp_Date = employmentObject.employment_date;<-- I am calling what I declared earlier
var duties = employmentObject.responsibility;<-- I am calling what I declared earlier in express
**//when I declared above two lines it brings up the error **
**//Can't save() the same doc multiple times in parallel.**
employmentObjectins = new employmentObject({
'employment_date': emp_Date,
'responsibility' :duties
});
employmentObjectins.save(function (err){
if(err){
console.log(err+' error saving object');
}
else{
console.log('no error in saving object');
}
});
});
【问题讨论】:
标签: javascript node.js express mongoose