初始化时解析服务器错误:"Tried to ensure field uniqueness for a class that already has duplicates."
Parse-Server error on initialization: "Tried to ensure field uniqueness for a class that already has duplicates."
编辑:已在下方解决。我认识的回购维护者的注意事项在这里浏览:我注意到许多违规用户都非常老。它们来自我们很久以前分叉数据库的时候。我不确定发生了什么变化,但确实发生了一些变化,不需要 npm 更新,导致此错误开始出现。这些用户多年来一直在我们的数据库中重复,但我们昨天才开始收到此异常。不确定这是否是一个 "issue" 值得研究的问题,或者它是否是问题得到解决的结果。
我发现了一些类似的问题,但它们是由于身份验证错误引起的,我没有遇到过。
我在电子邮件和用户名方面都遇到了上述错误消息,这并不奇怪,因为我使用用户的电子邮件作为他们的用户名。令人惊讶的是,这条错误消息在昨天中午开始出现,而我无法将其确定为问题的根源。没有创建具有重复电子邮件/用户名的新用户,我无法通过解析仪表板或 API 将用户名或电子邮件更改为重复。
更奇怪的是,这发生在生产服务器和测试服务器上,两者同时启动。一个曾经是另一个的副本,但分叉是三年前的事了。
我可以从哪里开始尝试解决这个问题?它似乎并没有阻止服务器运行,但每次启动调试服务器时都会触发未捕获的异常断点。
我正在研究 mongo 以本指南为基础的总体情况:
https://www.compose.com/articles/finding-duplicate-documents-in-mongodb/
但是,当我尝试 db.User.aggregate([{$group: { _id: {username: "$email"}, uniqueIds: {$addToSet: "$_id"}, count: {$sum: 1}}}, {$match: { count: {"$gt": 1}}}]);
时什么也没有出现,如果我尝试 _User(集合的实际名称),我会得到错误 E QUERY TypeError: Cannot call method 'aggregate' of undefined
为了更清晰的格式:
db._User.aggregate(
[
{
$group:{
_id: {
username: "$email"
}, uniqueIds: {
$addToSet: "$_id"
}, count: {
$sum: 1
}
}
}, {
$match: {
count: {
"$gt": 1
}
}
}
]
);
任何人都可以告诉我如何找出这些重复项的位置或为什么我现在才收到此错误?
Mongo shell 并不喜欢所有的集合名称,因此它们不可通过点访问。我只需要使用 .getCollection() 而不是 .collection,它工作得很好!
db.getCollection("_User").aggregate(
[
{
$group:{
_id: {
username: "$email"
}, uniqueIds: {
$addToSet: "$_id"
}, count: {
$sum: 1
}
}
}, {
$match: {
count: {
"$gt": 1
}
}
}
]
);
编辑:已在下方解决。我认识的回购维护者的注意事项在这里浏览:我注意到许多违规用户都非常老。它们来自我们很久以前分叉数据库的时候。我不确定发生了什么变化,但确实发生了一些变化,不需要 npm 更新,导致此错误开始出现。这些用户多年来一直在我们的数据库中重复,但我们昨天才开始收到此异常。不确定这是否是一个 "issue" 值得研究的问题,或者它是否是问题得到解决的结果。
我发现了一些类似的问题,但它们是由于身份验证错误引起的,我没有遇到过。
我在电子邮件和用户名方面都遇到了上述错误消息,这并不奇怪,因为我使用用户的电子邮件作为他们的用户名。令人惊讶的是,这条错误消息在昨天中午开始出现,而我无法将其确定为问题的根源。没有创建具有重复电子邮件/用户名的新用户,我无法通过解析仪表板或 API 将用户名或电子邮件更改为重复。
更奇怪的是,这发生在生产服务器和测试服务器上,两者同时启动。一个曾经是另一个的副本,但分叉是三年前的事了。
我可以从哪里开始尝试解决这个问题?它似乎并没有阻止服务器运行,但每次启动调试服务器时都会触发未捕获的异常断点。
我正在研究 mongo 以本指南为基础的总体情况: https://www.compose.com/articles/finding-duplicate-documents-in-mongodb/
但是,当我尝试 db.User.aggregate([{$group: { _id: {username: "$email"}, uniqueIds: {$addToSet: "$_id"}, count: {$sum: 1}}}, {$match: { count: {"$gt": 1}}}]);
时什么也没有出现,如果我尝试 _User(集合的实际名称),我会得到错误 E QUERY TypeError: Cannot call method 'aggregate' of undefined
为了更清晰的格式:
db._User.aggregate(
[
{
$group:{
_id: {
username: "$email"
}, uniqueIds: {
$addToSet: "$_id"
}, count: {
$sum: 1
}
}
}, {
$match: {
count: {
"$gt": 1
}
}
}
]
);
任何人都可以告诉我如何找出这些重复项的位置或为什么我现在才收到此错误?
Mongo shell 并不喜欢所有的集合名称,因此它们不可通过点访问。我只需要使用 .getCollection() 而不是 .collection,它工作得很好!
db.getCollection("_User").aggregate(
[
{
$group:{
_id: {
username: "$email"
}, uniqueIds: {
$addToSet: "$_id"
}, count: {
$sum: 1
}
}
}, {
$match: {
count: {
"$gt": 1
}
}
}
]
);