Это мой Angular TS файл:
const salaryInfo = {
payrollDetails: ( this.payrollDetails)
}
console.log('salaryInfo :', this.payrollDetails );
this.payrollSalaryService.newSalary(salaryInfo).subscribe(data => {
if (!data.success) {
this.messageClass = 'alert alert-danger';
this.message = data.message;
this.processingTransaction = false;
} else {
this.messageClass = 'alert alert-success';
this.message = data.message;
this.performAuthentication()
setTimeout(() => {
this.processingTransaction = false;
this.message = false;
jQuery("#payrollModal").modal("hide");
}, 1000);
}
});
this.payrollDetails запрашивается из базы данных. При просмотре из браузера он возвращает имя и вложенный массив: work []
Моя схема mon goose следующая:
const mongoose = require('mongoose');
mongoose.Promise = global.Promise;
const Schema = mongoose.Schema;
const payrollSalarySchema = new Schema({
date: {type: String },
payrollDetails: [{
branch: { type: String },
department: { type: String },
lastName: { type: String },
name: { type: String },
work: [{
regularWorkHours: { type: Number },
// hourlyRate: { type: String },
// holidayCredit: { type: String },
}]
}]
});
module.exports = mongoose.model('PayrollSalary', payrollSalarySchema);
И мой файл маршрутов в NodeJS это:
router.post('/newSalary', async (req, res) => {
console.log('payrollDetails :', req.body.payrollDetails);
try {
const payrollSalary = new PayrollSalary({
date: new Date(),
payrollDetails: req.body.payrollDetails,
});
await payrollSalary.save();
res.json({ success: true, message: 'Salary Processing Completed.' });
} catch (err) { res.json({ success: false, message: 'An error occured' }); }
});
module.exports = router;
Когда я console.log ('payrollDetails:', req.body.payrollDetails); в nodejs вложенный массив work [] пуст. Однако это не пусто, так же как и консоль, зарегистрированная в браузере.
Кроме того, если this.payrollDetails не запрашивается из базы данных, и я заменяю его постоянными значениями, появляется вложенный массив work [].