gpt4 book ai didi

node.js - Mongo/mongoose 模式被缓存在某处

转载 作者:太空宇宙 更新时间:2023-11-03 23:04:46 24 4
gpt4 key购买 nike

var UserSchema = new Schema({
"username": {type: String, unique: true },
"password": String,

})

所以我将属性名称更改为用户名,从那时起事情就变得糟糕了。

无论我做什么,我都会收到错误

E11000 重复键错误索引:test.users.$name_1 重复键:{ : null }

即使当我尝试删除数据库、更改要连接的数据库的名称并从架构中删除 unique: true 时,我仍然会遇到此错误。

无论我做什么,我实际上都无法删除此错误,为什么即使在删除每个数据库并删除唯一属性后它仍然抛出此错误...

这是保存函数 -

router.post('/register',  function(req, res){
var user = new User();

user.username = req.body.username;

//hash the password
bcrypt.genSalt(10, function(err, salt) {
bcrypt.hash(req.body.password, salt, function(err, hash) {
user.password = hash;
user.save(function(err){
if(err){
console.log(err.message);
if(err.message === "E11000 duplicate key error index: test.users.$name_1 dup key: { : \"" + user.username + "\" }"){ //this was working fine before i changed user.name to user.username
res.json({
error: "name already taken"
});
}else{
res.json({
error: "There was an error processing your registration."
});
}
return(err);
}
res.json({user: user});
})
});
});


});

最佳答案

该错误似乎是因为您已经插入了一个名称(或用户名)属性为空的文档。由于用户名有唯一索引,因此您只能拥有一个用户名为空的文档。

看到这个问题:

E11000 duplicate key error index in mongodb mongoose

此外,如果您从 Mongoose 架构中删除 {unique: true},也不会将其从数据库中删除。您实际上还必须从 Mongo 中删除索引——索引仍然存在,您的 Mongoose 模式将无法确保启动时有索引。 Mongoose 将在启动时在 MongoDB 中运行ensureIndex(),以确保该字段被索引,但从 Mongoose 中删除它实际上并没有从 Mongo 中删除它,这必须手动完成。

关于node.js - Mongo/mongoose 模式被缓存在某处,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37951613/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com