猫鼬重复键发现错误,而唯一性为假

时间:2018-12-15 18:37:13

标签: node.js mongodb mongoose

好吧,基本上,每当我尝试创建新用户时,猫鼬都会抛出错误,表明已找到重复的密钥:

"E11000 duplicate key error collection: test.users index: username_1 dup key: { : \"user1\" }"

当将用户名设置为unique时,我不确定为什么用户名会引发重复的键错误:false(以查看是否可以解决该问题)。

这是用户的架构,

const UserSchema = new mongoose.Schema({
    _id: mongoose.Schema.Types.ObjectId,
    username: { type: String, unique: false },
    tag: { type: String, unique: false },
    email: { type: String, unique: false },
    password: {type: String, unique: false },
});

这就是我当前保存用户的方式

const u1 = new UserModel({
    _id: mongoose.Types.ObjectId(),
    username: 'one',
    tag: '1',
    email: 'one@hi.com',
    password: '123',
})

const u2 = new UserModel({
    _id: mongoose.Types.ObjectId(),
    username: 'one',
    tag: '2',
    email: 'one.2@hi.com',
    password: '123',
})

await u1.save();
console.log('Saved User 1')
await u2.save();

console.log('Saved both users');

它确实保存了u1,但是引发了保存u2的错误

在阅读了一下stackoverflow之后,我读到了一些有关null键的信息,但是由于我手动设置了用户名(等),所以这应该不是问题吗?

有什么想法会导致这种情况吗?

1 个答案:

答案 0 :(得分:0)

没关系,显然,我不能只是更改Schema并期望它可以立即工作。我使用的是相同的MongoDB数据库和集合名称,而上一个项目使用了唯一因子。必须删除“用户”集合。现在像魅力一样工作

(我可以接受自己的答案,作为两天后的帖子答案)

如果您使用相同的数据库并更改架构,对于任何有相同问题的人,请不要忘记备份和删除任何旧的收藏集