当前位置: 首页 > 面试题库 >

MongoError,err:E11000重复键错误

聂溪叠
2023-03-14
问题内容

我有一个像这样的MongoDb模式

    var User = new Schema({
    "UserName": { type: String, required: true },
    "Email": { type: String, required: true, unique: true },
    "UserType": { type: String },
    "Password": { type: String }
});

我正在尝试创建一个新用户, 这是使用mongoose ODM在NodeJs中完成的, 这是用于创建的代码:

    controller.createUser = function (req, res) {

    var user = new models.User({
        "UserName": req.body.UserName.toLowerCase(),
        "Email": req.body.Email.toLowerCase(),
        "UserType": req.body.UserType.toLowerCase()
    });
    models.User.findOne({ 'Email': user.Email }, function (err, olduser) {
                    if (!err) {
                        if (olduser) {
                            res.send({ 'statusCode': 409, 'statusText': 'Email Already Exists' });
                        }
                        else if (!olduser) {
                            user.setPassword(req.body.Password);
                            user.save(function (err, done) {
                                if (!err) {
                                    console.log(user);
                                    res.send({ 'statusCode': 201, 'statusText': 'CREATED' });
                                }
                                else {
                                    res.send({ 'Status code': 500, 'statusText': 'Internal Server Error' });
                                }
                            });
                        }
                    }
                    else {
                        res.send({ 'statusCode': 500, 'statusText': 'ERROR' });
                    }
                });
};

为了创建新用户,我给属性和值如下:

 {
"UserName": "ann",
"Email": "ann@ann.com",
"UserType": "normaluser",
"Password":"123456"
}

我收到这样的错误:

{"Status code":500,"statusText":"Internal Server Error","Error":{"name":"MongoError","err":"E11000 duplicate key error index: medinfo.users.$UserName_1  dup key: { : \"ann\" }","code":11000,"n":0,"connectionId":54,"ok":1}}

我知道这个错误是因为用户名重复,但是 我没有为用户名设置唯一约束。每当添加新行时,我只需要电子邮件是唯一的,用户名就可以重复。 如何实现?


问题答案:

@ManseUK可能是正确的,看起来UserName是一个“键”-在这种情况下是索引。该_id属性是默认情况下创建的“主”索引,但是mongodb允许您使用多个。

启动mongo控制台并运行medinfo.users.getIndexes()?必须在“ UserName”上添加了索引。

required: true 不会这样做,但是您以前可能曾玩过其他设置,但索引尚未删除?



 类似资料:
  • 在node.js,从一个javascript循环,我试图插入一个json对象到一个mongoDB集合,但得到重复的键错误_id列。 {MongoError:E11000重复密钥错误集合:app.Tab2017index:id dup-key:{:ObjectId('5cbc813227b2ca2864b3c66a')} 这是我的javascript代码的一部分,它导致了错误。 以上代码在控制台上显

  • 问题内容: 我有重复密钥的问题。很长一段时间找不到答案。请帮助我解决此问题或解释为什么我得到重复的密钥错误。 但是在监视器中,我使用upsert,所以为什么会出现重复错误? monitor.js:62-70 监控架构 指数 并增加财产 utils.js 问题答案: 导致插入文档的ups不是完全原子的操作。将ups视为执行以下离散步骤: 查询标识的文档以进行增补。 如果文档存在,则自动更新现有文档。

  • 当我为第一个实体(customer1)创建数据时,数据创建成功了,但当我要为第二个实体创建数据时,Im会出现以下错误。我们在两个不同的包中生成这两个实体,它们的表注释名不同,所以我不明白为什么我会出现这个错误。我们还为每个实体创建不同的持久性单元名称...这个错误的原因是什么? 错误在提交中 异常[EclipseLink-4002](Eclipse Persistence Services-2.3

  • 问题内容: 以下是我在模型中的架构- 这就是我在控制器中使用它的方式- 这就是我将其保存在数据库中的方式- 错误 - 我检查了数据库集合,没有这样的重复条目,让我知道我在做什么错吗? 仅供参考- 和被获取的值。 我也检查了这篇文章,但没有帮助STACK LINK 如果我将其完全删除,则它将插入文档,否则即使我在local.email中有条目,也会引发错误“ Duplicate”错误 问题答案: 错

  • 我正在使用mongojs和Node.js在mongob中插入一个文档。这是一个REST应用编程接口,只有一个mongojs实例(具有本地驱动器)。每次,有一个api调用,SAME mongojs对象用于执行mongob操作。现在,我在尝试插入文档时得到以下错误。 该文档总是唯一的,我尝试了,它显示索引在_id。有人能帮助我如何解决这个问题吗?

  • 我得到一个错误: 分析错误:语法错误,意外'=',应为'、'或‘;’第2行 我的代码怎么了?PHP版本是最新的