好吧,基本上,每当我尝试创建新用户时,猫鼬都会抛出错误,表明已找到重复的密钥:
"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键的信息,但是由于我手动设置了用户名(等),所以这应该不是问题吗?
有什么想法会导致这种情况吗?
答案 0 :(得分:0)
没关系,显然,我不能只是更改Schema并期望它可以立即工作。我使用的是相同的MongoDB数据库和集合名称,而上一个项目使用了唯一因子。必须删除“用户”集合。现在像魅力一样工作
(我可以接受自己的答案,作为两天后的帖子答案)
如果您使用相同的数据库并更改架构,对于任何有相同问题的人,请不要忘记备份和删除任何旧的收藏集