Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
错误[ERR_HTTP_HEADERS_SENT]:发送到客户端后不能设置报头
不能再一个路由中发送两次响应(res.send,res.Json)
因为将数据分开存放所以调用两次封装号好的mysql,调用两次都发送了res.json导致报错
// 发布文章
router.post('/', function (req, res, next) {
// console.log(req.body);
// 随机数作为id
function algorithm () {
let abc = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'g', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'];
let [max, min] = [Math.floor(Math.random() * (10 - 7 + 1) + 1), Math.floor(Math.random() * (17 - 10 + 1) + 17)];
abc = abc.sort(() => 0.4 - Math.random()).slice(max, min).slice(0, 8).join("");
var a = new Date().getTime() + abc;
return a
}
let id = algorithm()
// 图片数据解析
let cover = {
id,
type: req.body.cover.type,
images: req.body.cover.images == "" ? null : req.body.cover.images
}
db("insert into db_image set ?", cover, (err, result) => {
//将这部分注释就好了
// if (err) {
// console.log(err);
// res.json({
// msg: "新增图片失败",
// code: 0
// })
// } else {
// res.json({
// code: 1,
// msg: "新增图片成功",
// })
// }
})
let values = {
id,
title: req.body.title,
content: req.body.content,
channel_id: req.body.channel_id,
comment_count: 0,
like_count: 0,
read_count: 0,
status: 2,
pubdate: dayjs().$d
}
db("insert into pc_articles set ?", values, (err, result) => {
if (err) {
console.log(err);
res.json({
msg: "新增文章失败",
code: 0
})
} else {
res.json({
code: 1,
msg: "新增文章信息成功",
})
}
})
})
ps:第一次拿node写接口很多地方代码还是很冗余且不规范