首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >获取Knex事务中的友好错误消息

获取Knex事务中的友好错误消息
EN

Stack Overflow用户
提问于 2020-03-29 01:13:11
回答 1查看 582关注 0票数 4

我正在使用Knex中的事务来删除和更新一些数据,这些数据运行良好,但偶尔也会从内部进程中抛出错误。我能够捕获错误并对它们作出反应,但我似乎无法获得描述错误的“友好”错误消息。下面是一个示例:

交易代码:

代码语言:javascript
运行
复制
try {
    const trxResponse = await this.knex.transaction(async (trx) => {

        // ... do some stuff ...

        // Error is thrown within this operation
        return await trx(this.tableName)
            .insert(data)
            .returning(this.fieldsToReturn);
    });

    return trxResponse;

} catch (err) {
    console.log('handled', err, JSON.stringify(err), err.message);
    throw new QueryError();
}

上面的console.log为每个值打印以下值(这些是真正的错误):

err{ error: invalid input value for enum relationship: "yourself"... /* stack trace */ <--我需要这个没有堆栈跟踪的文本

JSON.stringify(err){"name":"error","length":102,"severity":"ERROR","code":"22P02","file":"enum.c","line":"60","routine":"enum_in"}

err.messageinsert into "beneficiary" ("application", "email", "firstName", "lastName", "middleInitial", "percentage", "relationship", "suffix") values ($1, $2, $3, $4, $5, $6, $7, $8), ($9, $10, $11, $12, $13, $14, $15, $16) returning "firstName", "lastName", "suffix", "middleInitial", "email", "percentage", "relationship" - invalid input value for enum relationship: "yourself"

我真正需要的是当您在上面console.log(err)时显示的“错误”文本。如何从错误中仅拉出这条字符串?我想不出怎么才能得到那根绳子。

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2022-08-31 20:44:50

有一些关于错误消息和代码的讨论。我喜欢@jmm的提案

但是,不幸的是,我看不到任何其他的进展。

此时,我正在使用一些“硬编码”检查:

代码语言:javascript
运行
复制
...
try {
  await knex.insert(...);
catch (err) {
  if (err.message.includes('already exists')) {
    return "The item already exists";
  } else {
    return "DB Error";
  }
}

PS。我也找到了这个图书馆,但是我没有对它进行测试,它在一段时间前看起来已经被抛弃了。

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

https://stackoverflow.com/questions/60909055

复制
相关文章

相似问题

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