gpt4 book ai didi

javascript - 插入后无法返回正确的响应

转载 作者:行者123 更新时间:2023-11-29 05:07:04 27 4
gpt4 key购买 nike

我正在使用 Node.js/Express.js 将数据安装到我的 MySQL 数据库中。插入数据工作正常,但返回成功/失败给我一个错误。

TypeError: Cannot read property 'status' of undefined

这是我的代码:

var crud = {
newProject: function (req, res, callback) {
db.query('INSERT INTO projects SET ?', req.body, function(err, res) {
// This is where it fails
if(err){
return res.status(500).json({error: err});
} else {
return res.status(200).json({success: 'Insert row success'});
}
});
},
}

// Express routing
app.post('/project/*', crud.newProject);

我在这里没有得到什么?

解决方案
所以这就是我用来让它工作的方法(在按照建议将“res”更改为“resp”之后):

  if (err) throw err;
res.end(JSON.stringify({response: 'Success'}));

最佳答案

您定义 res 两次。快速响应对象正在被 Node 回调中的数据参数覆盖。

尝试以下(见评论)

var crud = {
newProject: function (req, res, callback) {
// changed 'res' to 'resp' to avoid collision with Express' 'res' object
db.query('INSERT INTO projects SET ?', req.body, function(err, resp) { // here's your error
// This is where it fails
if(err){
return res.status(500).json({error: err});
} else {
return res.status(200).json({success: 'Insert row success'});
}
});
},
}

// Express routing
app.post('/project/*', crud.newProject);

如果您在主配置中的最后一个 app.use() 之后定义了错误处理中间件函数

app.use(function (err, req, res, next) {
res.status(500).send(err.message || 'Internal server error.')
})

您可以使用 next 回调作为一个包罗万象的错误处理程序,这样上面的代码就变成了

var crud = {
newProject: function (req, res, callback) {
db.query('INSERT INTO projects SET ?', req.body, function(err, resp) {
if (err) return callback(err);
return res.json({success: 'Insert row success'});
});
},
}

// Express routing
app.post('/project/*', crud.newProject);

res.json() 默认情况下应将 200 Success 代码添加到响应 header 。理想情况下,您希望在检查 err 的状态后检查 Node 回调中的 resp 数据参数,以正确处理响应并相应地进行,尤其是在处理最后一个问题时与持续 token 相关联的已评估记录通常在响应中提供,有些 DBAL 和 API 会为您做,有些则不会。无论哪种方式,您都希望确保在成功响应之前不需要额外的递归来获取剩余的记录。

关于javascript - 插入后无法返回正确的响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45946512/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com