【问题标题】:Mongoose await save猫鼬等待保存
【发布时间】:2019-03-20 18:47:39
【问题描述】:

在我的 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. 保存后

【问题讨论】:

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


    【解决方案1】:

    请使用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);
    }
    

    【讨论】:

    • 老兄,谢谢!我已经和这个东西斗争了一段时间了。从来没有真正使用过 try/catch 的东西
    • @IftekharDani 你能解释一下为什么 OP 的代码不能按预期工作吗?
    猜你喜欢
    • 2018-11-29
    • 2021-01-22
    • 2019-05-10
    • 2018-08-30
    • 2017-11-01
    • 2020-10-16
    • 1970-01-01
    • 2022-12-18
    • 2018-07-24
    相关资源
    最近更新 更多