Невозможно опубликовать вложенный массив внутри массива с использованием NodeJS в MongoDB с использованием Angular - PullRequest
1 голос
/ 26 мая 2020

Это мой 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 [].

...