Javascript 如何修复重复密钥错误集合好友
我得到以下错误:Javascript 如何修复重复密钥错误集合好友,javascript,mongodb,mongoose,duplicates,mongoose-schema,Javascript,Mongodb,Mongoose,Duplicates,Mongoose Schema,我得到以下错误: E11000 duplicate key error collection: db.users index: friends.userid_1 dup key: { : null } 我不知道如何解决这个问题。默认情况下为nothing,但当我在friends中输入新的userid时,仍然会出现错误。为什么? 在用户架构中: friends : [ { userid : {type: String, default: '', in
E11000 duplicate key error collection: db.users index: friends.userid_1 dup key: { : null }
我不知道如何解决这个问题。默认情况下为nothing,但当我在friends
中输入新的userid时,仍然会出现错误。为什么?
在用户架构中:
friends : [
{
userid : {type: String, default: '', index: { unique: true }},
}
],
friendRequests: [
{
userid : {type: String, default: '', index: { unique: true }},
}
]
根据猫鼬官员的说法:
数组是特殊的,因为它们隐式地具有默认值[](空数组)
这就是为什么当您在朋友
中不输入任何内容时,它会隐式索引null
值的原因。要解决此问题,您可以将两个数组的default
值显式定义为undefined
,并创建索引以从unique
约束中排除空值,请尝试:
friends : {
type: [ { userid : {type: String, default: '', index: { unique: true, sparse: true } } } ],
default: undefined
},
friendRequests: {
type: [ { userid : {type: String, default: '', index: { unique: true, sparse: true } } } ],
default: undefined
}
编辑:请确保mongoose在测试之前重建索引您需要为看到此内容的人生成唯一ID