记录错误并将其发回响应中会产生完全不同的结果,即使它是相同的变量!
adminservices.js
var updateAdminById = function(new_admin_data, callback) {
logger.info("new_admin_data: " + JSON.stringify(new_admin_data));
logger.info("new_admin_data.id: " + new_admin_data.id);
models.admin
// .update({ admin_password: passwordCypher }, { where: { id: admin_id } })
.update(new_admin_data, { where: { id:new_admin_data.id } })
.then(function(admin) {
callback({
Update: true,
admin
})
})
.catch(function(error) {
callback({
Update: false,
error
})
});
};
admin_routes.js
router.post("/updateAdminAccountById", function(req, res) {
adminService.updateAdminById(req.body, (updateData) => {
if (updateData.update) {
//Update is succesfull return updated admin data
res.status(200).json(updateData.admin)
} else {
//Update failed return error
logger.error(updateData.error);
res.status(400).json(updateData.error)
}
})
});
在终端中,记录错误会给出如下结果:
2020-02-06T12:02:24+0100 admin_routes.js:459 SequelizeDatabaseError: enum enum_admins_role:"Administrateur“的输入值无效,但是,邮递员的响应是:
{
"name": "SequelizeDatabaseError",
"parent": {
"name": "error",
"length": 179,
"severity": "ERROR",
"code": "22P02",
"file": "d:\\pginstaller_12.auto\\postgres.windows-x64\\src\\backend\\utils\\adt\\enum.c",
"line": "133",
"routine": "enum_in",
"sql": "UPDATE \"admins\" SET \"nom\"=$1,\"email\"=$2,\"mot_de_passe\"=$3,\"role\"=$4,\"id\"=$5,\"updatedAt\"=$6 WHERE \"id\" = $7",
"parameters": [
"NewUpdatedValue",
"NewEmail",
"NewPassword",
"Administrateur",
"29",
"2020-02-06 11:02:23.391 +00:00",
"29"
]
},
"original": {
"name": "error",
"length": 179,
"severity": "ERROR",
"code": "22P02",
"file": "d:\\pginstaller_12.auto\\postgres.windows-x64\\src\\backend\\utils\\adt\\enum.c",
"line": "133",
"routine": "enum_in",
"sql": "UPDATE \"admins\" SET \"nom\"=$1,\"email\"=$2,\"mot_de_passe\"=$3,\"role\"=$4,\"id\"=$5,\"updatedAt\"=$6 WHERE \"id\" = $7",
"parameters": [
"NewUpdatedValue",
"NewEmail",
"NewPassword",
"Administrateur",
"29",
"2020-02-06 11:02:23.391 +00:00",
"29"
]
},
"sql": "UPDATE \"admins\" SET \"nom\"=$1,\"email\"=$2,\"mot_de_passe\"=$3,\"role\"=$4,\"id\"=$5,\"updatedAt\"=$6 WHERE \"id\" = $7",
"parameters": [
"NewUpdatedValue",
"NewEmail",
"NewPassword",
"Administrateur",
"29",
"2020-02-06 11:02:23.391 +00:00",
"29"
]
}
我的问题不是为什么我会有这个错误。我成功地修好了它。我的问题是:
为什么在终端和邮递员中显示错误的方式不同,如果它是相同的变量?
为什么错误描述不在邮递员中出现,就像出现在终端中一样?
发布于 2020-09-14 08:43:20
SequelizeDatabaseError
是BaseError
的后裔,而后者又是Error
的后代。
Error
重新定义.toString()
以打印实例的名称和消息属性(如果两者都可用的话),比如'${name}: ${message}'
。
有关更多细节,请参见:
https://stackoverflow.com/questions/60093635
复制相似问题