mongodb - 解析服务器升级到 v4.2:无法确保用户电子邮件地址的唯一性
问题描述
我最近将解析服务器升级到 v4.2。我还将 Mongo 更新到 v4.2(这是一个副本集配置)。现在,当 parse-server 引发时,出现以下错误“无法确保用户电子邮件地址的唯一性:试图确保已经有重复的类的字段唯一性。”
详细的错误是这样的:
{
"message": "Unable to ensure uniqueness for user email addresses: Tried to ensure field uniqueness for a class that already has duplicates.",
"code": 137,
"level": "warn",
"stack": "Error: Tried to ensure field uniqueness for a class that already has duplicates.\n at _adaptiveCollection.then.catch.error (/parse/node_modules/parse-server/lib/Adapters/Storage/Mongo/MongoStorageAdapter.js:569:15)\n at <anonymous>\n at process._tickDomainCallback (internal/process/next_tick.js:229:7)"
该错误是由_User
具有相同数据的用户名和电子邮件字段的类引起的。关于如何解决问题或使解析服务器不进行此检查的任何想法。
解决方案
该错误消息意味着无法在该email
字段上创建唯一索引。
唯一索引确保email
字段中的值只能出现一次,换句话说,它是唯一出现的。email
如果字段中已经存在违反唯一性规则的重复值,即相同的电子邮件地址已在集合中多次出现,则 MongoDB 无法创建此类索引。
请记住,Parse Server 4.0为字段email
和username
. 如果您已经有一个用户使用 emailemail@example.com
而另一个用户使用EMAIL@example.com
,则索引创建也将失败。
解决方案是删除重复的电子邮件条目并重新启动 Parse Server,以便再次尝试创建索引。
推荐阅读
- python - 正则表达式检查是否有尾随或前导空格
- javascript - 从 async / await try..catch 返回值
- json - 如何将单个 json 属性反序列化为多个 Java 字段(如果可能使用转换器)
- vue.js - 如何配置 nuxt 来处理动态页面的 404 错误?
- database - dynamoDB - 2 次查询或 1 次扫描哪个更好?
- javascript - 如何在代码移动到同一 func 中的第二个连接查询之前等待第一个 mysql 连接查询解决
- java - 如何使用 Collections 从 FirebaseFirestore 检索数组?
- .net-core - 抛出异常但中间件上下文响应为 200,但对客户端的响应为 500
- angular - 将 Observable 内容作为数组返回(Angular)
- asp.net-core - 通过中间件在 asp.net 核心中的 NoCache、NoStore 和 must-revalidate 缓存标头