在macOS上运行最新版本的Node.js。 还运行最新版本的猫鼬。
看到Error: cyclic dependency detected
实际上无法调试。 一切都指向猫鼬。 有什么建议? 今天开始发生。
/Users/nickparsons/Code/winds-2.0/api/src/node_modules/mongoose/lib/utils.js:417
throw err;
^
Error: cyclic dependency detected
at serializeObject (/Users/nickparsons/Code/winds-2.0/api/src/node_modules/bson/lib/bson/parser/serializer.js:296:33)
at serializeInto (/Users/nickparsons/Code/winds-2.0/api/src/node_modules/bson/lib/bson/parser/serializer.js:776:17)
at serializeObject (/Users/nickparsons/Code/winds-2.0/api/src/node_modules/bson/lib/bson/parser/serializer.js:308:18)
at serializeInto (/Users/nickparsons/Code/winds-2.0/api/src/node_modules/bson/lib/bson/parser/serializer.js:776:17)
at serializeObject (/Users/nickparsons/Code/winds-2.0/api/src/node_modules/bson/lib/bson/parser/serializer.js:308:18)
at serializeInto (/Users/nickparsons/Code/winds-2.0/api/src/node_modules/bson/lib/bson/parser/serializer.js:776:17)
at serializeObject (/Users/nickparsons/Code/winds-2.0/api/src/node_modules/bson/lib/bson/parser/serializer.js:308:18)
at serializeInto (/Users/nickparsons/Code/winds-2.0/api/src/node_modules/bson/lib/bson/parser/serializer.js:776:17)
at serializeObject (/Users/nickparsons/Code/winds-2.0/api/src/node_modules/bson/lib/bson/parser/serializer.js:308:18)
at serializeInto (/Users/nickparsons/Code/winds-2.0/api/src/node_modules/bson/lib/bson/parser/serializer.js:776:17)
at serializeObject (/Users/nickparsons/Code/winds-2.0/api/src/node_modules/bson/lib/bson/parser/serializer.js:308:18)
at serializeInto (/Users/nickparsons/Code/winds-2.0/api/src/node_modules/bson/lib/bson/parser/serializer.js:776:17)
at serializeObject (/Users/nickparsons/Code/winds-2.0/api/src/node_modules/bson/lib/bson/parser/serializer.js:308:18)
at serializeInto (/Users/nickparsons/Code/winds-2.0/api/src/node_modules/bson/lib/bson/parser/serializer.js:776:17)
at serializeObject (/Users/nickparsons/Code/winds-2.0/api/src/node_modules/bson/lib/bson/parser/serializer.js:308:18)
at serializeInto (/Users/nickparsons/Code/winds-2.0/api/src/node_modules/bson/lib/bson/parser/serializer.js:776:17)
at serializeObject (/Users/nickparsons/Code/winds-2.0/api/src/node_modules/bson/lib/bson/parser/serializer.js:308:18)
at serializeInto (/Users/nickparsons/Code/winds-2.0/api/src/node_modules/bson/lib/bson/parser/serializer.js:776:17)
at serializeObject (/Users/nickparsons/Code/winds-2.0/api/src/node_modules/bson/lib/bson/parser/serializer.js:308:18)
at serializeInto (/Users/nickparsons/Code/winds-2.0/api/src/node_modules/bson/lib/bson/parser/serializer.js:618:17)
at serializeObject (/Users/nickparsons/Code/winds-2.0/api/src/node_modules/bson/lib/bson/parser/serializer.js:308:18)
at serializeInto (/Users/nickparsons/Code/winds-2.0/api/src/node_modules/bson/lib/bson/parser/serializer.js:776:17)
这里最初的问题是什么?
尝试包括需要更新的字段,而不是整个对象。
我也有这个问题,同一行代码。
C:\ Users \ Rowan \ Onedrive \ code \ react \ gradable \ frontendnode_modules \ mongoose \ lib \ utils.js:417
犯错
@ nparsons08平。 您能否告诉我们,这最终是否确实是一个问题,您是否找到了解决方法(除了降级到较早的猫鼬版本之外),还是以其他方式解决了它?
同样在这里,绝对没有办法追踪。
错误来来去去。
Error: cyclic dependency detected
at serializeObject (/var/www/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:296:33)
at serializeInto (/var/www/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:776:17)
at serializeObject (/var/www/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:308:18)
at serializeInto (/var/www/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:776:17)
at serializeObject (/var/www/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:308:18)
at serializeInto (/var/www/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:776:17)
at serializeObject (/var/www/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:308:18)
at serializeInto (/var/www/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:776:17)
at serializeObject (/var/www/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:308:18)
at serializeInto (/var/www/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:776:17)
at serializeObject (/var/www/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:308:18)
at serializeInto (/var/www/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:776:17)
at serializeObject (/var/www/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:308:18)
at serializeInto (/var/www/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:776:17)
at serializeObject (/var/www/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:308:18)
at serializeInto (/var/www/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:776:17)
at serializeObject (/var/www/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:308:18)
at serializeInto (/var/www/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:776:17)
at serializeObject (/var/www/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:308:18)
at serializeInto (/var/www/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:618:17)
at serializeObject (/var/www/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:308:18)
at serializeInto (/var/www/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:776:17)
at BSON.serialize (/var/www/node_modules/mongoose/node_modules/bson/lib/bson/bson.js:58:27)
at Query.toBin (/var/www/node_modules/mongoose/node_modules/mongodb-core/lib/connection/commands.js:141:25)
at serializeCommands (/var/www/node_modules/mongoose/node_modules/mongodb-core/lib/connection/pool.js:1050:43)
at Pool.write (/var/www/node_modules/mongoose/node_modules/mongodb-core/lib/connection/pool.js:1230:3)
at executeWrite (/var/www/node_modules/mongoose/node_modules/mongodb-core/lib/wireprotocol/3_2_support.js:80:10)
at WireProtocol.insert (/var/www/node_modules/mongoose/node_modules/mongodb-core/lib/wireprotocol/3_2_support.js:91:3)
at Server.insert (/var/www/node_modules/mongoose/node_modules/mongodb-core/lib/topologies/server.js:747:35)
at executeWriteOperation (/var/www/node_modules/mongoose/node_modules/mongodb-core/lib/topologies/mongos.js:899:22)
at Mongos.insert (/var/www/node_modules/mongoose/node_modules/mongodb-core/lib/topologies/mongos.js:955:3)
at Mongos.insert (/var/www/node_modules/mongoose/node_modules/mongodb/lib/topologies/topology_base.js:315:25)
at /var/www/node_modules/mongoose/node_modules/mongodb/lib/db.js:1093:21
at handleCallback (/var/www/node_modules/mongoose/node_modules/mongodb/lib/utils.js:128:55)
当前遇到同样的问题。 任何想法如何解决这个问题。
因为“当前遇到相同的问题”太模糊而无法采取行动,因此将其锁定。 请打开一个新问题,并遵循问题模板。
伙计们,我想我找到了原因-显然与mongodb 3.6有关(我最近从3.2升级到3.6,猫鼬也升级到了5.x)...
所以我再也无法运行我的应用程序了,我得到了这些循环依赖性错误...对我有用的唯一解决方法是将autoIndex: false
到mongoose.connect
-但是因此,即使稍后在应用程序上使用ensureIndex()
之后,也不再创建我的索引-最终会导致相同的循环依赖项错误。
长话短说,我设法通过从模型内部删除所有属性INDEX并将其附加到模型中来解决问题,如下所示:
之前
client: { type: ObjectId, ref: 'tsCli', required: true, index: true },
后
client: { type: ObjectId, ref: 'tsCli', required: true },
[...]
Schema.index({ client: 1 });
并且,更重要的是,从复合索引中删除属性INDEX,即:
之前
Schema.index({ client: 1, code: 1 }, { unique: true, index: true, partialFilterExpression: { code: { $type: String } } });
后
Schema.index({ client: 1, code: 1 }, { unique: true, partialFilterExpression: { code: { $type: String } } });
希望这对别人有帮助
干杯
我在尝试在数组上添加索引时特别遇到了这个问题:
...
tags: {
type: [String],
index: true
}
...
只需将prop / index添加到我的架构中就会导致此问题
嘿@AndrewBarba ..尝试像我提到的那样添加索引,而不是在字段上,而是在模式上,看看它是否有效
@gustvao我实际上首先尝试过,没有运气:(
@AndrewBarba我有同样的问题。 使用MongoClient我必须使用:
Collection.createIndexes([
{
key: { email: 1 },
name: 'user_email',
unique: true
}
])
希望这可以帮助。
尝试添加文本索引时发生在我身上:
/Users/ashish/dictionary/js_server/node_modules/mongoose/lib/utils.js:429
throw err;
^
Error: cyclic dependency detected
at serializeObject (/Users/ashish/dictionary/js_server/node_modules/bson/lib/bson/parser/serializer.js:331:34)
at serializeInto (/Users/ashish/dictionary/js_server/node_modules/bson/lib/bson/parser/serializer.js:934:17)
at serializeObject (/Users/ashish/dictionary/js_server/node_modules/bson/lib/bson/parser/serializer.js:345:18)
at serializeInto (/Users/ashish/dictionary/js_server/node_modules/bson/lib/bson/parser/serializer.js:934:17)
at serializeObject (/Users/ashish/dictionary/js_server/node_modules/bson/lib/bson/parser/serializer.js:345:18)
at serializeInto (/Users/ashish/dictionary/js_server/node_modules/bson/lib/bson/parser/serializer.js:934:17)
at serializeObject (/Users/ashish/dictionary/js_server/node_modules/bson/lib/bson/parser/serializer.js:345:18)
at serializeInto (/Users/ashish/dictionary/js_server/node_modules/bson/lib/bson/parser/serializer.js:934:17)
at serializeObject (/Users/ashish/dictionary/js_server/node_modules/bson/lib/bson/parser/serializer.js:345:18)
at serializeInto (/Users/ashish/dictionary/js_server/node_modules/bson/lib/bson/parser/serializer.js:934:17)
at serializeObject (/Users/ashish/dictionary/js_server/node_modules/bson/lib/bson/parser/serializer.js:345:18)
at serializeInto (/Users/ashish/dictionary/js_server/node_modules/bson/lib/bson/parser/serializer.js:934:17)
at serializeObject (/Users/ashish/dictionary/js_server/node_modules/bson/lib/bson/parser/serializer.js:345:18)
at serializeInto (/Users/ashish/dictionary/js_server/node_modules/bson/lib/bson/parser/serializer.js:934:17)
at serializeObject (/Users/ashish/dictionary/js_server/node_modules/bson/lib/bson/parser/serializer.js:345:18)
at serializeInto (/Users/ashish/dictionary/js_server/node_modules/bson/lib/bson/parser/serializer.js:934:17)
Emitted 'error' event at:
at done (/Users/ashish/dictionary/js_server/node_modules/mongoose/lib/model.js:1051:13)
at /Users/ashish/dictionary/js_server/node_modules/mongoose/lib/model.js:1093:16
at /Users/ashish/dictionary/js_server/node_modules/mongoose/lib/utils.js:424:16
at err (/Users/ashish/dictionary/js_server/node_modules/mongodb/lib/utils.js:415:14)
at session.endSession (/Users/ashish/dictionary/js_server/node_modules/mongodb/lib/utils.js:399:27)
at ClientSession.endSession (/Users/ashish/dictionary/js_server/node_modules/mongodb-core/lib/sessions.js:72:41)
at executeCallback (/Users/ashish/dictionary/js_server/node_modules/mongodb/lib/utils.js:397:17)
at err (/Users/ashish/dictionary/js_server/node_modules/mongodb/lib/utils.js:415:14)
at executeCallback (/Users/ashish/dictionary/js_server/node_modules/mongodb/lib/utils.js:404:25)
at err (/Users/ashish/dictionary/js_server/node_modules/mongodb/lib/utils.js:415:14)
at executeCallback (/Users/ashish/dictionary/js_server/node_modules/mongodb/lib/utils.js:404:25)
at handleCallback (/Users/ashish/dictionary/js_server/node_modules/mongodb/lib/utils.js:128:55)
at /Users/ashish/dictionary/js_server/node_modules/mongodb/lib/db.js:1068:25
at executeWrite (/Users/ashish/dictionary/js_server/node_modules/mongodb-core/lib/wireprotocol/3_2_support.js:82:5)
at WireProtocol.insert (/Users/ashish/dictionary/js_server/node_modules/mongodb-core/lib/wireprotocol/3_2_support.js:91:3)
at Server.insert (/Users/ashish/dictionary/js_server/node_modules/mongodb-core/lib/topologies/server.js:752:35)
在我的字段上创建文本索引会出现此错误。 码:
WordSchema = new Schema({
title: {
type: String,
required: true,
},
meanings: [MeaningSchema],
keys: [String],
tags: [String],
language: String,
createdAt: Date,
updatedAt: Date
});
WordSchema.index({title: 'text'}); ---> Error
WordSchema.index({title: 1}); ---> Works fine
节点-9.11.1
猫鼬-5.1.1(与5.0.8相同)
MongoDB-3.6.2
可能值得注意的是,我在$$$ mongodb+srv://
uri结构中使用了一些选项:
mongodb+srv://user:[email protected]?readPreference=primaryPreferred&retryWrites=true
一旦删除了uri选项,问题就消失了,而没有任何其他代码更改:
mongodb+srv://user:[email protected]
可以确认-删除retryWrites
可以解决问题,即使使用了“旧的” mongodb://
URI。
嗨@ vkarpov15 ,
删除Atlas的retryWrites有什么影响,这是猫鼬在内部进行的操作吗?
我打开有关retryWrites的问题
https://github.com/Automattic/mongoose/issues/6469 (然后将其关闭..以为已解决)
问候,
塔雷克
你好
更新到最新的猫鼬版本后,我也收到此错误。 我没有在任何架构中创建任何索引。 现在我的应用程序太大了,我无法找出导致此问题的代码是什么。在Mongoose ^ 4.13.1上运行良好。
/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/lib/utils.js:429
犯错
^
错误:检测到循环依赖性
在serializeObject(/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:331:34)
在serializeInto(/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:934:17)
在serializeObject(/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:345:18)
在serializeInto(/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:934:17)
在serializeObject(/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:345:18)
在serializeInto(/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:934:17)
在serializeObject(/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:345:18)
在serializeInto(/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:934:17)
在serializeObject(/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:345:18)
在serializeInto(/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:934:17)
在serializeObject(/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:345:18)
在serializeInto(/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:934:17)
在serializeObject(/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:345:18)
在serializeInto(/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:934:17)
在serializeObject(/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:345:18)
在serializeInto(/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:934:17)
在serializeObject(/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:345:18)
在serializeInto(/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:934:17)
在serializeObject(/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:345:18)
在serializeInto(/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:724:17)
在serializeObject(/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:345:18)
在serializeInto(/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:934:17)
在BSON.serialize(/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/bson.js:63:28)
在Query.toBin(/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/mongodb-core/lib/connection/commands.js:144:25)
在serializeCommands(/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/mongodb-core/lib/connection/pool.js:1053:43)
在Pool.write(/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/mongodb-core/lib/connection/pool.js:1269:3)
在executeWrite(/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/mongodb-core/lib/wireprotocol/3_2_support.js:80:10)
在WireProtocol.insert(/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/mongodb-core/lib/wireprotocol/3_2_support.js:91:3)
[nodemon]应用程序崩溃-等待文件更改,然后再开始...
将调查并检查是否打开retryWrites
会导致此崩溃。
我可以确认从连接URI中删除&retryWrites=true
可以修复错误
已确认! 彻底删除&retryWrites=true
可修复错误
适用于Atlas:没有?retryWrites=true
MongoDB集群
下面的脚本在本地和针对Atlas都适合我。 请修改以下脚本以重现此问题:
const assert = require('assert');
const mongoose = require('mongoose');
mongoose.set('debug', true);
const { Schema } = mongoose;
run().then(() => console.log('done')).catch(error => console.error(error.stack));
async function run() {
await mongoose.connect('mongodb+srv://user:[email protected]/test?retryWrites=true');
const M = mongoose.model('Test', new Schema({ name: String }));
await M.create({ name: 'test' });
console.log(await M.findOne());
}
@ vkarpov15
请修改以下脚本以重现此问题:
``const assert = require('assert');
const mongoose = require('mongoose');
mongoose.set('debug',true);
const {模式} =猫鼬;
run()。then(()=> console.log('done'))。catch(error => console.error(error.stack));
异步功能run(){
等待mongoose.connect('mongodb + srv:// user:[email protected]/test?retryWrites = true',{dbName:'db-name'});
const M = mongoose.model('Test',new Schema({name:{type:String,unique:true}})));
等待M.create({name:'test'});
console.log(等待M.findOne());
}
```
使用@mykhaliuk的这段代码:
const mongoose = require('mongoose');
mongoose.set('debug', true);
const { Schema } = mongoose;
run().then(() => console.log('done')).catch(error => console.error(error.stack));
async function run() {
await mongoose.connect('mongodb+srv://user:[email protected]/test?retryWrites=true', {dbName:'db-name'});
const M = mongoose.model('Test', new Schema({ name: {type: String, unique: true }}));
await M.create({ name: 'test' });
console.log(await M.findOne());
}
我收到以下错误: Error: cyclic dependency detected
我发现维护retryWrites
的唯一方法是使用mongodb API中的函数createIndexes
:
const mongoose = require('mongoose');
mongoose.set('debug', true);
const { Schema } = mongoose;
run().then(() => console.log('done')).catch(error => console.error(error.stack));
async function run() {
await mongoose.connect('mongodb+srv://user:[email protected]/test?retryWrites=true');
const M = mongoose.model('NewTest', new Schema({ name: {type: String} }));
M.collection.createIndexes([{key: {name: 1}, name: "name", unique: true}])
await M.create({ name: 'test' });
console.log(await M.findOne());
}
所以我们要从猫鼬模型定义中删除unique
, index
并使用createIndexes (https://docs.mongodb.com/manual/reference/command/createIndexes/)创建所有索引
我遇到了这个问题,也从Mongoose 4.11.7升级到5.1.4。 我尝试从我的连接URI中删除?retryWrites=true
,但是不走运。 最终,我发现我正在像这样的自定义_id
属性上使用index:true
:
_id: {
type: String,
required: true,
index: true
}
删除index:true
解决我的问题。 还发现了提到解决方案的问题: https :
对我来说,当我的连接字符串中有retryWrites=true
且模型中有Schema.index({ someKey: 1 })
时,我遇到了这个问题。
在mongo shell中,执行db.adminCommand( { getParameter: 1, featureCompatibilityVersion: 1 } )
返回{ "featureCompatibilityVersion" : { "version" : "3.6" } }
。
然后,我通过在mongo shell中执行db.adminCommand( { setFeatureCompatibilityVersion: "3.4" } )
,将mongodb的featureCompatibilityVersion
降级为3.4
,并再次使用retryWrites=true
和Schema.index({ someKey: 1 })
来运行我的应用程序上文提到的。
确保成功创建索引后,我通过执行db.adminCommand( { setFeatureCompatibilityVersion: "3.6" } )
将mongodb的featureCompatibilityVersion
升级到3.6
db.adminCommand( { setFeatureCompatibilityVersion: "3.6" } )
,然后再次运行我的应用程序。 循环依赖性错误不再出现。
找到了问题。 它与Atlas或retryWrites
或featureCompatibilityVersion
无关。 它与尝试在_id
上创建索引有关。 最少的复制脚本:
const mongoose = require('mongoose');
mongoose.set('debug', true);
Error.stackTraceLimit = Infinity;
const { Schema } = mongoose;
run().then(() => console.log('done')).catch(error => console.error(error.stack));
async function run() {
await mongoose.connect('mongodb://localhost:27017/test', {dbName: 'test'});
const M = mongoose.model('Test', new Schema({ _id: { type: String, index: true } }));
await M.create({ _id: 'abc' + Math.random() });
console.log(await M.findOne());
}
为此将在mongodb驱动程序中打开PR
不错@ vkarpov15
@ vkarpov15💪
我通过从连接字符串中删除retryWrites querystring来修复了我的问题。
之前
mongodb:// sa :
后
mongodb:// sa :
希望这可以帮助。
尝试删除_id
@otisidev上的所有索引。 因此,如果您有类似new Schema({ _id: {type: String, index: true} })
或schema.index({ _id: 1 })
请删除该内容。
@ vkarpov15我认为这里可能有两个问题。 我在项目中的_id
上没有任何索引,直到我从URI中删除?retryWrites
,仍然看到此错误。 我将创建一个显示该项目的项目。 无论如何,这似乎确实是mongodb驱动程序而非Mongoose的问题
@ vkarpov15这是一个产生此问题的脚本,在_id
上没有任何索引:
猫鼬:v5.1.5
节点:v8.11.3
const mongoose = require('mongoose')
const { Schema } = mongoose
async function run() {
try {
await mongoose.connect('mongodb://localhost:27017/test?retryWrites=true', {
dbName: 'mongoose-issue-6109'
})
const Model = mongoose.model('Model', new Schema({
email: {
type: String,
index: {
unique: true
}
}
}))
await Model.create({
email: '[email protected]'
})
console.log(await Model.findOne())
} catch(err) {
console.error(err)
}
}
run()
将索引字段设置为:
index: { type: 'hashed', unique: true }
也总是触发此问题
是的,这似乎是一个合法的问题-我已经在我的代码库中扫描了错误的索引,而且它似乎仍然会再次发生。 降级为5.1.0
,看来工作正常。
链接到https://github.com/Automattic/mongoose/issues/6469-其他一些复制步骤。
我已经看到了错误。
_email _ :{
类型:字符串,
必填:是,
_唯一:正确_
},
.......
credentialSchema.index({_ email_ :1,域:1,ip地址:1,密码:-1});
我不得不从模型定义中删除唯一性。
@AndrewBarba感谢您的复制,我发现了另一个问题,例如node-mongodb-native#1740,请参阅https://github.com/mongodb/node-mongodb-native/pull/1758 。 一旦发布了新版本的mongodb驱动程序,此修复程序将以mongoose结尾。
使用地图集时遇到了相同的问题,但是在本地一切都很好。 正如有人建议的那样,快速解决此问题的方法是删除参数?retryWrites=true
,现在一切正常。
应该在5.1.8中修复
我在MongoDB Atlas和GridStore上遇到了一些问题,直到删除了“ retryWrites = true”,写入操作才起作用。
最有用的评论
可以确认-删除
retryWrites
可以解决问题,即使使用了“旧的”mongodb://
URI。