当前位置: 首页 > 知识库问答 >
问题:

Mongoose-由::11000 E11000重复键错误索引引起?

卫嘉言
2023-03-14

为什么会出现此重复错误-创建新用户时出错:WriteError({“code”:11000,“index”:0,“errmsg”:“insertDocument::由::11000 E11000重复键错误索引引起”

提供的所有字段都不是空的。

架构:

// Declare schema
var userSchema = new mongoose.Schema({
    username: {type: String, required: true, index: {unique: true}},
    password: {type: String, required: true},
    created_on: {type: Date, default: Date.now}
});

职位:

// Create - POST
// Create the first method of the API : POST used to create a new user.
router.post("/", function(req, res, next) {
    // Get values from POST request
    var username = req.body.username;
    var password = req.body.password;
    console.log(req.body); // { username: 'tealou', password: 'test123' }

    // Create new user document
    User.create({
        username: username,
        password: password
    }, function(err, user) {
        console.log(user); // undefined
        if (err) {
            console.log("Error creating new user: " + err);
            res.send("Error creating new user.");
        } else {
            console.log("POST creating new user: " + username);
            res.json(user);
        }
    })
});

错误:

创建新用户时出错:WriteError({“code”:11000,“index”:0,“errmsg”:“insertDocument::由引起::11000 E11000重复密钥错误索引:iotdb.users.$name_1 dup key:{:null}”,“op:{“username”:“tealou”,“password”:“$2a$10$7mPGND2FRuJDGnXaVTnkru2.xsGn2Ksf8veBKur4ouD9VUNj60RaC”,“\u id:“5786020088245d33140d6f94”,“已创建”:“2016-07-13T08:55:28.279Z”,“__v:0}”)

有什么想法吗?

共有2个答案

汪博达
2023-03-14

放弃集合并允许我的代码重新创建它,这对我很有效。

堵远航
2023-03-14

在您的模式中,最初有一个名为name的字段,该字段设置为唯一的。

我怎么知道?因为告诉我这样做的错误:

duplicate key error index: **iotdb.users.$name_1**

您已将该字段重命名为username,但未删除旧索引。默认情况下,MongoDB会将不存在字段的值设置为null

相关文件如下:

如果文档在唯一索引中没有索引字段的值,索引将为此文档存储空值。由于唯一约束,MongoDB将只允许一个缺少索引字段的文档。

为了解决这个问题,您需要删除重命名的name字段的索引。

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

  • 问题内容: 为什么会出现此重复错误- ? 提供的所有字段都不为空。 架构: 发布: 错误: 创建新用户时出错:WriteError({:“ 11000,” index“:0,” errmsg“:” insertDocument ::由:: 11000 E11000重复键错误导致:iotdb.users。$ name_1 dup key:{: null}“,” op“:{”用户名“:” tealou

  • 下面是模型中的架构- 这就是我在控制器中使用它的方式- 我就是这样把它保存在数据库里的- 错误- 我检查了数据库集合,没有这样的重复条目存在,让我知道我做错了什么? FYI-和正在获取值。 我也检查了这篇文章,但没有帮助堆栈链接 如果我完全删除,它就插入文档,否则它会抛出错误“重复”错误,即使我在local.email中有一个条目

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

  • 我对Java是全新的,有一些C#的背景。我目前正在使用Eclipse在一个程序中运行一个方法,将该方法的参数与文本文件中的用户名和密码进行比较。 但是,在运行代码之后,我收到了一个名为“java.lang.ArrayIndexOutOfBoundsException=1”的错误。我不明白为什么会这样。下面包含代码和文件。我试图只读取上面的三个用户名和密码,下面的其他三个只是填充它并在程序中稍后使用

  • MongoError:E11000重复密钥错误集合:myFirstDatabase。tours索引:rating_1 dup键:{rating:null} 当我使用postman创建数据时,我不理解这个错误,说dup key:{rating:null},在shcema中没有任何评级键,这是从哪里来的?为什么我只能创作一次。 这是我的代码(tourSchema) 这是我试图添加的数据 }