"ERROR:MongoServerError: E11000 duplicate key error collection: myFirstDatabase.files index: key_1



我正在尝试在我的api中集成创建用户的可能性。我使用node和mongodb。这是我的模式:

const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const FileSchema = new Schema({
name: {
type: String,
required: true,
minlength:1,
unique:false,
}, extension: {
type:String,
required:true,
unique:false,
}, content: {
type:String,
required:true,
unique:false,
},group:{
type:String,
required:false,
unique:false,
}, creator:{
type: String,
required: true,
unique:false,
}
})
const File = mongoose.model('File', FileSchema);
module.exports = File;

这是我的功能:

const createNewFile = (req, res) => {
const name = req.body.name;
const extension = req.body.extension;
const creator = req.body.creator;
const group = req.body.group;
console.log(req.body)
const newFile = new File({name, extension, content:'Write your code here',creator, group:group});
newFile.save()
.then(() => res.json('200'))
.catch(err => res.status(400).json('ERROR:'+err))
}

Insomia和Postman控制台返回标题中的错误。我能做些什么来避免这个错误?我添加了unique: false,因为我在另一个版本中读到了它,但它还是失败了。有人能帮帮我吗?当数据库为空时,我可以创建第一个元素。然后,当我创建第二个时,错误就出现了。请帮我

在mongodb节点中,myFirstDatabase数据库的files集合中的{key: 1}上有一个唯一索引。

我怀疑这是在测试潜在的模式设计时创建的。

为了插入不包含该字段的唯一值的文档(包括不包括该字段(,需要删除该索引。

实现这一点的几种方法:

  • 使用mongoshell或Compass或Robo3t等管理工具连接到mongod并手动删除索引
  • 使用Mongoose提供的syncIndexes
  • 删除files集合
  • 删除myFirstDatabase数据库
  • 停止mongod,删除整个dbpath,然后用一个干净的实例重新开始

最新更新