gpt4 book ai didi

node.js - Mongoose, MongoError 处理

转载 作者:行者123 更新时间:2023-12-03 08:30:36 29 4
gpt4 key购买 nike

我正在创建一个使用 Mongoose 与 MongoDb 交互的简单应用程序,独特的验证错误处理一直困扰着我。

UserSchema = new Schema({
email: {type:String, required: true, unique: true, trim: true, match: [emailRegex, 'Email format is invalid']},
hashedPassword: {type: String, default: ''},
salt: {type: String, required: true, unique:true}

}
);

在上面的模式中,我有 unique :true对于电子邮件,当输入具有重复电子邮件地址的新文档时,我收到的错误是:
{ [MongoError: insertDocument :: caused by :: 11000 E11000 duplic
ndex: testdb.users.$email_1 dup key: { : "minhs22sa22f@gmail.com
name: 'MongoError',
code: 11000,
err: 'insertDocument :: caused by :: 11000 E11000 duplicate key
estdb.users.$email_1 dup key: { : "minhs22sa22f@gmail.com" }' }

上面的错误对象需要相当多的努力才能从它们中提取信息以显示回客户端,所以我的问题是:无论如何让它使用 validationError相反,那些更直观、更简单?

我也考虑过使用自定义路径验证,但如果可能的话,最好使用内置功能。

最佳答案

并不真地。该错误是电子邮件字段上的唯一键违规,由 MongoDB 发出。为了使其成为验证错误,验证函数必须自己发现唯一 key 违规。在验证函数中,基本上有两种方式可以发生这种情况:

  • 查询MongoDB,得到上述错误,解析为validationError
  • 记住所有 email s 这样您就可以自己检查唯一的 key 违规

  • 第一种方法只是将解析推送到验证函数中,并使用额外的 MongoDB 查询而没有任何收获。第二个没有意义。

    编写一个函数,将错误解析为您需要的任何有用的形式。它只需要编写和测试一次。

    关于node.js - Mongoose, MongoError 处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25716402/

    29 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com