在这段代码中,只要有人输入已经存在的用户名,我就会收到此错误:
“错误[ERR_HTTP_HEADERS_SENT]:将标头发送到客户端后,无法设置标头”
有人知道如何解决这个问题吗?谢谢。
const express = require('express')
const router = express.Router()
const bcrypt = require('bcryptjs')
const users= require('./users')
router.post('/reg', async (req, res, next) => {
let { firstname, lastname, username, email, password, confirm_password } = req.body
if (password !== confirm_password) {
res.status(400).json({
msg: 'passwords dont match'
})
return
}
await (users.findOne({username: username})).then(user => {
if(user) {
res.status(400).json({
msg: `username already exists`
})
return
}
})
await users.findOne({email: email}).then(user => {
if(user) {
res.status(400).json({
msg: 'email alraedy exists'
})
return
}
})
let newUser = new users({
firstname,
lastname,
username,
password,
email
})
bcrypt.genSalt(10, (err, salt) => {
bcrypt.hash(newUser.password, salt, (err, hash) => {
if (err) throw err
newUser.password = hash
newUser.save().then(user => {
return res.status(201).json({
success: true,
msg: 'you successfully signed up'
})
})
})
})
})```