Mongoose经常返回e11000 error的原因分析
2019/6/27 21:03:46
本文主要是介绍Mongoose经常返回e11000 error的原因分析,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
发现问题
最近在工作中遇到了一个问题,在定义了schema之后,每一次save都会报E11000,但是db.xxx.find()
里面根本就没有冲突的条目,什么情况呢?
问题分析
可能问题出在定义的schema的成员使用了unique,比如:
var CatalogSchema = new Schema({ idCat: { type: String, default: '', trim: true, unique: 'Id should be unique!', required: 'Id cannot be blank' }, titleCat: { type: String, default: '', trim: true, unique: 'Title should be unique!', required: 'Title cannot be blank' } }); mongoose.model('Catalog', CatalogSchema);
unique表示,不能冲突,迷惑的地方就是,没有冲突啊,其实还有一种可能,或许你压根想不到,就是确实冲突了,因为你给成员改名了。
用mongodb的命令行工具查看就知道:
> db.catalogs.getIndexes() [ { "v" : 1, "key" : { "_id" : 1 }, "name" : "_id_", "ns" : "ocr-dev.catalogs" }, { "v" : 1, "unique" : true, "key" : { "name" : 1 }, "name" : "name_1", "ns" : "ocr-dev.catalogs", "background" : true }, { "v" : 1, "unique" : true, "key" : { "title" : 1 }, "name" : "title_1", "ns" : "ocr-dev.catalogs", "background" : true }, { "v" : 1, "unique" : true, "key" : { "idCat" : 1 }, "name" : "idCat_1", "ns" : "ocr-dev.catalogs", "background" : true }, { "v" : 1, "unique" : true, "key" : { "titleCat" : 1 }, "name" : "titleCat_1", "ns" : "ocr-dev.catalogs", "background" : true } ]
问题解决
里面的name和title就是之前的名字,改成了idCat和titleCat,但是成员还是会在mongodb里面,所以,你要做的就是删除这个collection然后在重新运行mongoose了:
> db.catalogs.drop() false > db.catalogs.getIndexes() [ ]
然后再在代码里面插入就不会有问题了。
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对找一找教程网的支持。
这篇关于Mongoose经常返回e11000 error的原因分析的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-09-28基于Python+Vue开发的口腔牙科预约管理系统
- 2024-09-28基于Python+Vue开发的酒店客房预订管理系统
- 2024-09-27使用js将ETH账户的资产打散其他账户web3
- 2024-09-27我轻松地将我的 React.js 应用程序翻译成了多种语言。下面是我是如何做到的... ??
- 2024-09-27?? 使用 useMemo 和 useCallback 加速 React:告别缓慢的重新渲染!??
- 2024-09-27Vue CLI多环境配置教程:新手入门指南
- 2024-09-27Vue CLI多环境配置教程:快速入门指南
- 2024-09-27Vue CLI教程:新手入门指南
- 2024-09-27Vue CLI教程:初学者快速入门指南
- 2024-09-27Vue3公共组件教程:入门与实践