【问题标题】:Checking for unique index violation with bookshelfjs使用 bookshelfjs 检查唯一索引违规
【发布时间】:2017-05-07 12:17:09
【问题描述】:

在 mongodb 中,就像在 schema/attribute/property/field 上设置 index: { unique: true } 一样简单。在书架中,您可以使用 knex 指定唯一索引。但是,您如何检查是否存在唯一密钥违规?例如,如果我将用户名、电子邮件设置为唯一键,并且有人使用相同的用户名和电子邮件创建了一条新记录,它应该会引发错误。在 Mongo 中,这就像检查 err.code 11000 一样简单。

我可以查询数据库并检查是否存在记录,但我宁愿不必进行两次查询。 (检查预先存在的用户和插入)。

【问题讨论】:

    标签: javascript sql postgresql


    【解决方案1】:

    例如,如果我将用户名、电子邮件设置为唯一键,并且有人使用相同的用户名和电子邮件创建新记录,它应该会引发错误。在 Mongo 中,这就像检查 err.code 11000 一样简单。

    这与 PostgreSQL 的原理相同。你正在寻找SQLSTATE23505,即unique_violation

    我发布了this question,因为 bookshelf.js 的文档明显没有提到这一点。根据this github issue,您正在错误字典中寻找sqlState 属性,假设节点的MySQL 和PostgreSQL 驱动程序行为相同。

    大概是err.sqlstate

    看起来err.code 也可能类似于UNIQUE_VIOLATIONERRCODE_UNIQUE_VIOLATION,但不确定。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-04-28
      • 1970-01-01
      • 1970-01-01
      • 2022-01-23
      • 2023-03-16
      • 1970-01-01
      • 2018-01-10
      • 2015-11-03
      相关资源
      最近更新 更多