首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SequelizeDatabaseError:在响应中发送错误

SequelizeDatabaseError:在响应中发送错误
EN

Stack Overflow用户
提问于 2020-02-06 11:11:38
回答 1查看 209关注 0票数 0

记录错误并将其发回响应中会产生完全不同的结果,即使它是相同的变量!

adminservices.js

代码语言:javascript
运行
复制
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

代码语言:javascript
运行
复制
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“的输入值无效,但是,邮递员的响应是:

代码语言:javascript
运行
复制
{
    "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"
    ]
}

我的问题不是为什么我会有这个错误。我成功地修好了它。我的问题是:

为什么在终端和邮递员中显示错误的方式不同,如果它是相同的变量?

为什么错误描述不在邮递员中出现,就像出现在终端中一样?

EN

回答 1

Stack Overflow用户

发布于 2020-09-14 08:43:20

SequelizeDatabaseErrorBaseError的后裔,而后者又是Error的后代。

Error重新定义.toString()以打印实例的名称和消息属性(如果两者都可用的话),比如'${name}: ${message}'

有关更多细节,请参见:

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60093635

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档