如何修复重复的关键错误收集朋友



我得到以下错误:

E11000 duplicate key error collection: db.users index: friends.userid_1 dup key: { : null }

我不知道该如何解决。默认情况下什么都没有,但是当我输入friends中没有任何内容的新用户ID时,我仍然会遇到错误。为什么?

在用户架构中:

   friends : [
        {
            userid : {type: String, default: '', index: { unique: true }},
        }
    ],
    friendRequests: [
        {
            userid : {type: String, default: '', index: { unique: true }},
        }
    ]

根据猫鼬的官方文档:

数组很特别,因为它们隐式具有[](空数组)的默认值。

这就是为什么在friends中没有输入时隐式索引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
}

编辑:请确保在测试之前,请确保猫鼬重建索引

相关内容

最新更新