Node.js Express.js http响应是否默认返回承诺

Node.js Express.js http响应是否默认返回承诺,node.js,express,http,Node.js,Express,Http,例如,下面代码中的res.send(user)是否返回承诺 app.post('/users', (req, res) => { const user = new User(req.body) user.save().then(() => { res.send(user) }).catch((e) => { res.status(400).send(e) }) }) 不,如果要返回承诺,应该使用异步函数而不是同

例如,下面代码中的
res.send(user)
是否返回承诺

app.post('/users', (req, res) => {
    const user = new User(req.body)

    user.save().then(() => {
        res.send(user)
    }).catch((e) => {
        res.status(400).send(e)
    })
})

不,如果要返回承诺,应该使用异步函数而不是同步函数。Promises多年来一直是该语言的一部分(在ES2015中标准化并引入),最近与ES2017中的async和await更加集成

app.post('/users', async (req, res) => {
   try{
       const user = new User(req.body);
       await user.save();
       res.send(user);
   } catch(e){
       res.status(400).send(e);
   }
}

您不需要等待req.body
const user=new user(req.body)
如果使用async wait,则不需要调用
wait user.save()
res.send(user)
@Abjullah回调中的异步等待不会影响res.send方法。如果我们从该函数返回某个内容,它将返回一个承诺,但express无论如何都不会将其用于res.send。我仍然没有答案(我也假设它没有回报承诺,但目前无法证明),欢迎你再来一次