mongoose - 如何独立处理 Mongoose 中多个唯一性的错误?

标签 mongoose error-handling unique

我有一个具有多个唯一性的架构,如下所示:

var userSchema = new mongoose.Schema({
  user: {
    type: String,
    unique: true
  },
  email: {
    type: String,
    unique: true
  }
});

在尝试进行保存期间,我知道我可以访问属性err.code (11000)来处理唯一错误,如下所示:
user.save((err, doc) => {
    if(!err) {
      res.send(doc);
    } else {
      if (err.code == 11000)
        res.status(422).send(['Message here!']);
    }
  });

因此,在这种情况下,我想为两个字段设置自定义消息:用户电子邮件
有什么办法吗?

最佳答案

我找到了发送 object error 并检查其属性的方法,并注意到有一个名为 keyPattern 的属性。

因此,代码工作正常:

user.save((err, doc) => {
    if(!err) {
      res.send(doc);
    } else {
      if (err.code == 11000)
        if(Object.keys(err.keyPattern)[0] === "user")
          res.status(422).send(['Duplicate user!']);
        else if(Object.keys(err.keyPattern)[0] === "email")
          res.status(422).send(['Duplicate email!']);
    }
  });

关于mongoose - 如何独立处理 Mongoose 中多个唯一性的错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58331113/

相关文章:

MySql Workbench 语法错误

mongodb - 如何使用聚合来计算特定文档的总和?

node.js - await...defer 在 forEach 循环中

php - PHP使用数组中的foreach定义变量

python - Pandas 不为空,但获取max()arg为空序列

r - 这种独特/过滤语法如何工作?

javascript - 如何获取数组中 objectId 的内容 - Mongoose/NodeJs

MongoDB 中的 JavaScript NoSQL 注入(inject)预防

java - 列位置 '0' 超出范围。此 ResultSet 的列数为 '3'

php - 防止和延迟并发 mysql 插入