【发布时间】:2020-05-26 11:37:36
【问题描述】:
at ServerResponse.setHeader (_http_outgoing.js:470:11)
at ServerResponse.header (C:\root\node_modules\express\lib\response.js:771:10)
at ServerResponse.send (C:\root\node_modules\express\lib\response.js:170:12)
at ServerResponse.json (C:\root\node_modules\express\lib\response.js:267:15)
at ServerResponse.send (C:\root\node_modules\express\lib\response.js:158:21)
at grade.save (C:\root\route\api\listsData.js:223:32)
at C:\root\node_modules\mongoose\lib\model.js:4604:16
at C:\root\node_modules\mongoose\lib\utils.js:268:11
at $__save.error (C:\root\node_modules\mongoose\lib\model.js:472:16)
at C:\root\node_modules\kareem\index.js:246:48
at next (C:\root\node_modules\kareem\index.js:167:27)
at next (C:\root\node_modules\kareem\index.js:169:9)
at Kareem.execPost (C:\root\node_modules\kareem\index.js:217:3)
at _handleWrapError (C:\root\node_modules\kareem\index.js:245:21)
at C:\root\node_modules\kareem\index.js:272:14
at _next (C:\root\node_modules\kareem\index.js:94:14)
Emitted 'error' event at:
请帮忙,我已经面临这个问题将近 3 天了,下面是我的后端 nodejs 代码: 等级模型
const mongoose = require('mongoose');
const GradeSchema = new mongoose.Schema({
name: {
type: String,
maxlength: 100,
required: true,
unique: true
}
})
module.exports = Grade = mongoose.model('Grade', GradeSchema);
AddGradeRoute
'/add/grade',
[
check('name', 'grade name is require')
.not()
.isEmpty()
],
auth,
admin,
(req, res) => {
const errors = validationResult(req);
if (!errors.isEmpty()) res.status(400).send({ errors: errors.array() });
const grade = new Grade(req.body);
grade.save((err, doc) => {
if (err) res.status(400).send({ success: false, err });
return res.status(200).send({
success: true,
grade: doc,
msg: 'Grade add successfully'
});
});
}
);
问题是当我尝试使用发布请求添加等级时,它工作正常,但如果我输入空白字段并再次发送请求,应用程序崩溃并返回上面的错误“发送后无法设置标题”给客户”。谢谢。
【问题讨论】:
-
响应发送到客户端后,您将无法发送标头。因此,当所有回调都执行时,只发送一次响应。那应该可以。
-
为了详细说明 Raja 的评论,您的代码中有多个
res.status().send在某些错误情况下一个接一个地执行。确保在每个res.status().send事件之后return以确保只有其中一个被执行。 -
是的,谢谢您的意见,它对我帮助很大。我很感激。
标签: node.js reactjs mongodb mongoose mern