'Router.post an array of Object ID'S using Mongoose and NodeJs router.post

I almost have the desired functionality but it's not exactly what I wanted to approach. I have two model schema, Control and SubControl. The SubControl is referenced in the Control model. I want to post the control model + a reference of the SubControl.

My post method:

router.post(
  '/add',
  auth,
  role.checkRole(role.ROLES.Admin, role.ROLES.Regulator),
  async (req, res) => {
    try {

    const subControl = new SubControl({...req.body});
    const subControlDoc = await subControl.save();
    const control = new Control({...req.body}); 
    control.subControl.push(subControlDoc._id);
    const savedControl = await control.save();

      res.status(200).json({
        success: true,
        message: `Control has been added successfully!`,
        control: savedControl
      });
    } catch (error) {
      return res.status(400).json({
        error
        // error: 'Your request could not be processed. Please try again.'
      });
    }
  }
);

My Control Schema:

const ControlSchema = new Schema({
  _id: {
    type: Schema.ObjectId,
    auto: true
  },
  mainControl: {
    type: String
  },
  subControl: [{
    subControlNo: {type: Mongoose.Schema.Types.String, ref: 'SubControl'}
  }],
  controlDescription: {
    type: String,
    trim: true
  },
  updated: Date,
  created: {
    type: Date,
    default: Date.now
  }
});

module.exports = Mongoose.model('Control', ControlSchema);

My SubControl schema:

const SubControlSchema = new Schema({
   _id: {
     type: Schema.ObjectId,
     auto: true
   },
   subControlNo: {
     type: String
   },
  updated: Date,
  created: {
    type: Date,
    default: Date.now
  }
});

module.exports = Mongoose.model('SubControl', SubControlSchema);

Postman:

{
   "mainControl": "nn",
  "controlDescription": "controldescription",
    "subControl": 
   [
   {
    "subControlNo": "1-2"
   },
   {
       "subControlNo": "1-2-1"
   }
   ]
  }

Result I'm getting: enter image description here

Question: Why am I getting 3 object id's although I inserted 2 and why only the last object ID is saved in my SubControl database? I this the way to add array of object id's or not?



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source