猫鼬等待保存

时间:2018-10-16 09:16:51

标签: node.js asynchronous mongoose promise async-await

在我的Nodejs项目中,我想先await一个mongoose.save函数,然后再继续执行我的代码。下面的示例不起作用,但是任何人都可以帮我解决一些问题。

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');
});

当前console.log的顺序为:

  1. 保存之前
  2. 保存后
  3. 已保存的项目

但是我希望是这样

  1. 保存之前
  2. 已保存的项目
  3. 保存后

1 个答案:

答案 0 :(得分:3)

请使用trycatch更改代码。

另外,请检查如何使用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);
}