简体   繁体   中英

Post data to Subdocument - Mongoose Express

After googling....

Using Mongoose/Express to save data I have issues: Cannot post data to subdocument or nested document

Here is my Mongoose model:

const Users = new Schema({
    firstname : {
        type : String
    },
    password : {type : String},
    phone : {type : Number},
    city : {type : String},
    country : {type : String},
    experience : [
        {
            title : {type : String},
            company : {type : String},
            description : {type : String},
            date_bg : {type : Date},
            date_end : {type : Date},
        }
    ],
    education : [
        {
            degree : {type : String},
            school : {type : String},
            description : {type : String},
            date_bg : {type : Date},
            date_end : {type : Date},
        }
    ],
// ...
})

And here is post router:

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

//    my data from fronted is like this :
 
// req.body.experience is like this (same as education): 
// [{title: "title experince 1", company: "title experince", date_bg: "2021-02-11", date_end: "2021-02-02", description: "title experince"}
{title: "title experince 2", company: "title experince 2", date_bg: "2021-02-10", date_end: "2021-02-08", description: "tstset"}]
    const user = new Users(req.body) // This cause cast error for the *experience* and *education*
    try {
        await user.save()
        return res.status(200).json({message : "Signin up successfully, Your account is now active!"})
    } catch (error) {
        return res.json({error : "Something went wrong, please try again later!", message : error})
    }
}

My question is:

How to post my data to subdocument? (My problem is in the experience and education model)

in the req.body.experience of request there is a 1 before the second experience so change the format of body like this:

[
  {
    title: "title experince 1",
    company: "title experince",
    date_bg: "2021-02-11",
    date_end: "2021-02-02",
    description: "title experince"
  },
  {
    title: "title experince 2",
    company: "title experince 2",
    date_bg: "2021-02-10",
    date_end: "2021-02-08",
    description: "tstset"
  }
]

This is my recieve data but actually cannot saved:

{
  email: 'manana04@gmail.com',
  password: '$2a$10$DSpWahC5QCDEWwr1VljOXeok3awr/vVzDRcGazQsevu3H1ZgNY.pm',
  firstname: 'dkfsdgk',
  lastname: 'kvhdvgdjk',
  job_title: 'cbhckvk5',
  description: 'sdfvbilfgad',
  hourly_rate: '454',
  city: 'sdkvhdfvik',
  country: 'hsvhdo',
  education: [],
  experience: [
    {
      title: 'Title experincev v',
      company: 'dfvbhdfighfi',
      date_bg: '2021-02-04',
      date_end: '2021-02-17',
      description: 'sdfsfsdfs'
    },
    {
      title: 'tititititititititititititit',
      company: 'dfldhkfjshdkfhsdkfshk',
      date_bg: '2021-02-04',
      date_end: '2021-02-16',
      description: 'sdfshfdslfsdhfhs'
    }
  ]
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM