我有一个 NodeJS Rest API,其中有一个用户集合,此外我还进行用户短信验证。
这是 POST 的控制器/:id/verification
exports.verification = (req, res) => {
const id = req.params.id
return User.find(id)
.then( user => {
if (user.code !== req.body.code) {
res.json({ message: 'Incorrect code' })
res.sendStatus(500)
return
}
user.isVerified = true
user.save( error => {
if (error) {
res.json({ message: 'Failed to update user' })
res.sendStatus(500)
return
}
res.json({ user })
res.sendStatus(200)
} )
} )
.catch( error => {
res.json({ error })
} )
}
但问题是当我发帖到/:id/verification
我收到这个错误
错误:发送后无法设置标头。 - NodeJS 和 Express
在这一行:
res.json({ user })
res.sendStatus(200)
但我不明白为什么,在此之前我没有发送任何回复。
有人可以解释一下我做错了什么吗?
你同时使用res.json()
and res.sendStatus()
两者一起,两者都发送response
返回,这就是为什么它显示错误Can't set headers after they are sent
.
您应该只使用其中之一。
如果您想将状态与 JSON 响应一起发送,您可以尝试以下操作:
res.status(500).json({ message: 'Incorrect code' });
另外,状态200
is default
使用时res.send
, res.json
等等,所以你不需要发送status 200
with res.json()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)