mongoose E11000 duplicate key error collection

发布于 2022-09-05 08:52:27 字数 1540 浏览 17 评论 0

mongoDB 插入数据时,第一条数据能插入,第二条提示E11000 duplicate key error collection。怎么解决?

user.js

const mongoose = require('mongoose');

const Schema = mongoose.Schema;

// create Comment Schema & model
const UserSchema = new Schema({
    uid: {
        type : Number,
        index: {
            unique: true
        },
    },
    username: {
        type: String,
        required: [true, 'username field is required']
    },
    password: {
        type: String,
        required: [true, 'username field is required']
    },
    headImageUrl: {
        type: String,
    },
    created: {
        type: Date,
        default: Date.now
    },
    admin: {
        type: Boolean,
        default: false
    }


});

const User = mongoose.model('users', UserSchema);

module.exports = User;

插入数据库部分的代码:

router.post('/regeist', function (req, res, next) {
    bcrypt.hash(req.body.password, config.saltRounds).then(function (hashPassword) {
        req.body.password = hashPassword;
        User.create(req.body).then(function (echo) {
            res.json(echo);
        }).catch(next);
    });
});

错误信息:

WriteError({"code":11000,"index":0,"errmsg":"E11000 duplicate key error collection: video.users index: id_1 dup key: { : null }","op":{"username":"Fcho","password":"$2a$10$0SQsBRvqaRC8JB37dMWEMegGvScsce3YosG9QwoLeL1s0KcQq0HMW","uid":10001,"_id":"5985df9c05e88c2272d79745","admin":false,"created":"2017-08-05T15:09:16.908Z","__v":0}})

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

2022-09-12 08:52:27

报错的原因

数据值重复。

你设置了一个 uid 的字段,但是第一次插入数据表的时候,你没有赋值,uid 字段是 null。第二次再插入数据的时候,uid 还是没有赋值,字段还是 null,而且你还设置 uid 属性是 unique,两次的数据都是 null ,所以报错了。

解决办法

uid 这个字段是不需要设置的,MongoDB 数据库会自动给每一条记录设置一个 ObjectId
下面这一部分去掉就行了:

uid: {
        type : Number,
        index: {
            unique: true
        },
    },
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文