Home > Back-end >  How to add data inside nested array in mongodb
How to add data inside nested array in mongodb

Time:12-17

I am using mongoose for database functionalities in my nodejs project.Below is my model.

Here is the POST request:

enter image description here

In MongoDb data is saving like this :

enter image description here

Here owers array is empty. expense.js

const mongoose = require('mongoose');

const ExpenseSchema = new mongoose.Schema({

  userid:{
      type: String,
      required: true
  },
  owers:[{
     owerid:{
        type: String
      },
     amt:{
       type: Number  
     }
    }],
  name:{
    type: String,
    required: true
  },
  amount:{
      type: Number,
      require: true
  }
});

const expense = mongoose.model('expense',ExpenseSchema);
module.exports = expense;

Whenever I am trying to insert something array is showing empty.Below is my code:

addExpense.js

const expense = require('../models/expense.js');

const addExpense = async (req,res) => {

const {name,amount,owerid,amt} = req.body;
console.log(name   " "   owerid);
const {userid} = req.params;

const expens = new expense({userid,name,amount});

try{
    const data = await expens.save();
    expens.owers.push({"owerid":owerid,"amt":amt});
    res.send({"id":data._id}); 
}
catch(error){
    res.send(error);
}
};

module.exports = {addExpense};

Someone let me know what I am doing wrong.

CodePudding user response:

Try This

try{
    const data = await expens.save();
    data.owers.push({"owerid":owerid,"amt":amt});
    data.save();
    res.send({"id":data._id}); 
}
catch(error){
    res.send(error);
}

CodePudding user response:

Try to push the owers object after creating the new expense instance:

const expens = new expense({ userid, name, amount});
expens.owers.push({ amt: owerid.amt })
  • Related