[英]Express headers error when sending request
請求此方法時出現錯誤“[ERR_HTTP_HEADERS_SENT] 將標頭發送到客戶端后無法設置”。 我剛剛熟悉了 express 並且很可能成功地做了一些事情。 告訴我是什么導致了錯誤
const generateAccessToken = (id,username) => {
const payload = {
id,
username
}
return jwt.sign(payload, secret, {expiresIn: "24h"});
}
async login(req, res) {
try {
const {username, password} = req.body;
pool.query('SELECT * FROM users', (error, result) => {
if(error) return console.log(error);
result.map(item => {
if (item.username !== username) {
return res.status(400).json({message: 'Error username'});
}
const validPassword = bcrypt.compareSync(password, item.password);
if (!validPassword) {
return res.status(400).json({message: 'Error password'});
}
const token = generateAccessToken(item.id,item.username);
return res.json({token});
});
});
} catch (e) {
console.log(e);
res.status(400).json({message: 'Login error'});
}
}
您正在寫入.map
內部的響應,因此它會多次寫入標頭,並且您只能執行一次。
快速瀏覽表明您可能想要執行以下操作:
pool.query('SELECT * FROM users WHERE username=:username', { replacements: { username }})
但我不確定您使用的是什么 sql 驅動程序或它如何處理綁定參數,或者您的用戶名列上是否有唯一索引等。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.