'Javascript await / promise order of execution is not as expected
In my Nodejs project I would just like to await a mongoose.save function before continuing with my code. The below example does not work, but can anyone help me with something that will work please.
app.post('/api/CreateUser', async (req, res) => {
    const newUser = new User({
        'email': req.body.email,
        'name': req.body.name
    });
    console.log('before save');
    await newUser.save((err, userDoc) => {
        if (err) return res.status(400).send(err);
        console.log('saved item');
    });
    console.log('after save');
});
The current console.log order is:
- before save
 - after save
 - saved item
 
But I would like it to be:
- before save
 - saved item
 - after save
 
Solution 1:[1]
Please change code with try and catch.
Also, check how to use await.
try {
  const newUser = new User({
    'email': req.body.email,
    'name': req.body.name
  });
  console.log('before save');
  let saveUser = await newUser.save(); //when fail its goes to catch
  console.log(saveUser); //when success it print.
  console.log('after save');
} catch (err) {
  console.log('err' + err);
  res.status(500).send(err);
}
    					Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source | 
|---|---|
| Solution 1 | IftekharDani | 
