如何在 Mongoose 中等待 model.save()

Leo*_*ice 1 javascript mongoose mongodb node.js

我有一个像这样的函数:

createNewUser async (user) {
    const newUser = new User();
     newUser.name = user.name;
     newUser.password = user.password;
     let result = await newUser.save((err, data) => {
         if (err) return err;
         console.log(data);
         return data;
     })
     console.log(result) // Undefined
}
Run Code Online (Sandbox Code Playgroud)

结果返回未定义,并且它在 console.log(data) 之前运行,这非常奇怪。有什么方法可以获取 newUser.save() 的结果,无论是错误还是成功保存的数据?

Ale*_*sov 5

async/await如果您想使用or ,则不必使用回调promises文档中明确了这一点。

所以,正确的代码:

async createNewUser (user) {
    const newUser = new User();
    newUser.name = user.name;
    newUser.password = user.password;

    const result = await newUser.save();
    console.log(result); // result
}
Run Code Online (Sandbox Code Playgroud)

如果您需要处理错误(强烈建议这样做,但在您的代码中错误处理程序不会执行任何操作),您可以将其包装到try/catch

async createNewUser (user) {
    const newUser = new User();
    newUser.name = user.name;
    newUser.password = user.password;

    try {
      const result = await newUser.save();
      console.log(result); // result
    } catch (err) {
      console.error("something goes wrong");
    }
}
Run Code Online (Sandbox Code Playgroud)