mongoose E11000 duplicate key error collection
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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
报错的原因
数据值重复。
你设置了一个
uid
的字段,但是第一次插入数据表的时候,你没有赋值,uid
字段是null
。第二次再插入数据的时候,uid
还是没有赋值,字段还是null
,而且你还设置uid
属性是unique
,两次的数据都是null
,所以报错了。解决办法
uid
这个字段是不需要设置的,MongoDB
数据库会自动给每一条记录设置一个ObjectId
。下面这一部分去掉就行了: