我正在尝试在我的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,然后用一个干净的实例重新开始