Mongoose: Error: se detectó dependencia cíclica

Creado en 8 feb. 2018  ·  40Comentarios  ·  Fuente: Automattic/mongoose

Ejecutando la última versión de Node.js en macOS. También ejecutando la última versión de Mongoose.

Ver Error: cyclic dependency detected literalmente sin forma de depurar. Todo apunta a Mongoose. ¿Alguna sugerencia? Comenzó a suceder hoy.

/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)
confirmed-bug underlying library issue

Comentario más útil

Puede confirmar: eliminar retryWrites hizo que el problema desapareciera, incluso con el URI de mongodb:// "antiguo".

Todos 40 comentarios

¿Cuál fue el problema original aquí?

Intente incluir el campo que necesita actualizarse en lugar del objeto completo.

Yo también tengo este problema, la misma línea de código.
C: \ Users \ Rowan \ Onedrive \ code \ react \ gradeable \ frontendnode_modules \ mongoose \ lib \ utils.js: 417
tirar err;

@ nparsons08 Ping. ¿Puede decirnos si resultó ser un problema de su parte, encontró una solución alternativa (además de degradar a una versión anterior de mangosta) o lo resolvió de otra manera?

Lo mismo aquí y absolutamente ninguna manera de rastrear.

El Error viene y se va.

image

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)

Actualmente experimentando el mismo problema. Alguna idea de cómo resolver esto.

Bloquear esto porque "Actualmente experimentando el mismo problema" es demasiado vago para ser procesable. Abra un nuevo problema y siga la plantilla de problemas.

chicos, creo que encontré la causa, aparentemente está relacionado con mongodb 3.6 (recientemente actualicé de 3.2 a 3.6 y mongoose también se actualizó a 5.x) ...

así que ya no podía ejecutar mi aplicación, estaba obteniendo estos errores de dependencia cíclica ... la única solución que funcionó para mí fue agregar autoIndex: false en mongoose.connect - pero haciendo por lo que mis índices ya no se creaban incluso después de usar ensureIndex() más adelante en la aplicación; eventualmente resultaría en los mismos errores de dependencia cíclica.

En pocas palabras, logré solucionarlo eliminando todos los atributos INDEX del interior de mis modelos y luego agregándolos al modelo, así:

antes de

client: { type: ObjectId, ref: 'tsCli', required: true, index: true },

después

client: { type: ObjectId, ref: 'tsCli', required: true },
[...]
Schema.index({ client: 1 });

Y, lo que es más importante, eliminar el atributo INDEX de los índices compuestos, es decir:

antes de

Schema.index({ client: 1, code: 1 }, { unique: true, index: true, partialFilterExpression: { code: { $type: String } } });

después

Schema.index({ client: 1, code: 1 }, { unique: true, partialFilterExpression: { code: { $type: String } } });

espero que esto ayude a otros
salud

Me encuentro específicamente con este problema cuando intento agregar un índice en una matriz:

...
tags: {
  type: [String],
  index: true
}
...

Simplemente agregar ese prop / index a mi esquema está causando este problema

oye @AndrewBarba ... intenta agregar el índice como mencioné, no en el campo sino en el esquema y ver si funciona

@gustvao Lo intenté primero, sin suerte :(

@AndrewBarba Tuve el mismo problema. Usando MongoClient tuve que usar:

Collection.createIndexes([
    {
        key: { email: 1 },
        name: 'user_email',
        unique: true
    }
])

Espero que esto ayude.

Me pasa cuando intento agregar un índice de texto:

/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)

Crear un índice de texto en mi campo da este error. Código:

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

nodo - 9.11.1
mangosta - 5.1.1 (lo mismo con 5.0.8)
MongoDB - 3.6.2

Vale la pena señalar que estaba usando la estructura mongodb+srv:// uri con algunas opciones:

mongodb+srv://user:[email protected]?readPreference=primaryPreferred&retryWrites=true

Una vez que eliminé las opciones de uri, el problema desapareció sin ningún otro cambio de código:

mongodb+srv://user:[email protected]

Puede confirmar: eliminar retryWrites hizo que el problema desapareciera, incluso con el URI de mongodb:// "antiguo".

Hola @ vkarpov15 ,

¿Cuál es el impacto de eliminar retryWrites para Atlas? ¿Es esto algo que mongoose está haciendo internamente?

Abro este problema sobre retryWrites
https://github.com/Automattic/mongoose/issues/6469 (luego lo cerré ... pensé que estaba resuelto)

Saludos,
Tarek

Hola
También recibo este error después de actualizar a la última versión de mangosta. No estoy creando ningún índice en ninguno de mis esquemas. Ahora mi aplicación es tan grande que no puedo averiguar qué código está causando este problema. En mangosta ^ 4.13.1 funciona bien.
/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/lib/utils.js:429
tirar err;
^

Error: se detectó dependencia cíclica
en serializeObject (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:331:34)
en serializeInto (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:934:17)
en serializeObject (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:345:18)
en serializeInto (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:934:17)
en serializeObject (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:345:18)
en serializeInto (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:934:17)
en serializeObject (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:345:18)
en serializeInto (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:934:17)
en serializeObject (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:345:18)
en serializeInto (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:934:17)
en serializeObject (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:345:18)
en serializeInto (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:934:17)
en serializeObject (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:345:18)
en serializeInto (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:934:17)
en serializeObject (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:345:18)
en serializeInto (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:934:17)
en serializeObject (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:345:18)
en serializeInto (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:934:17)
en serializeObject (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:345:18)
en serializeInto (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:724:17)
en serializeObject (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:345:18)
en serializeInto (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:934:17)
en BSON.serialize (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/bson.js:63:28)
en Query.toBin (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/mongodb-core/lib/connection/commands.js:144:25)
en serializeCommands (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/mongodb-core/lib/connection/pool.js:1053:43)
en Pool.write (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/mongodb-core/lib/connection/pool.js:1269:3)
en executeWrite (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/mongodb-core/lib/wireprotocol/3_2_support.js:80:10)
en WireProtocol.insert (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/mongodb-core/lib/wireprotocol/3_2_support.js:91:3)
La aplicación [nodemon] se bloqueó: esperando cambios en el archivo antes de comenzar ...

Investigará y comprobará si activar retryWrites causa este bloqueo.

Puedo confirmar que eliminar &retryWrites=true del URI de conexión corrige el error

¡Confirmado! eliminar &retryWrites=true realmente corrige el error

Funciona en Atlas: clúster MongoDB sin ?retryWrites=true

El siguiente script funciona bien para mí tanto a nivel local como contra Atlas. Modifique el siguiente script para reproducir este problema:

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

Modifique el siguiente script para reproducir este problema:

`` `const assert = require ('afirmado');
const mangosta = require ('mangosta');
mongoose.set ('depurar', verdadero);

const {esquema} = mangosta;

ejecutar (). luego (() => console.log ('hecho')). catch (error => console.error (error.stack));

función asíncrona run () {
await mongoose.connect ('mongodb + srv: // usuario: [email protected]/test? retryWrites = true', {dbName: 'db-name'});

const M = mongoose.model ('Prueba', nuevo Esquema ({nombre: {tipo: Cadena, único: verdadero}}));

espera M.create ({nombre: 'prueba'});
console.log (espera M.findOne ());
}
''

Con este código de @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());
}

Recibí el siguiente error: Error: cyclic dependency detected

La única forma que encontré para mantener retryWrites es usando la función createIndexes de la API de mongodb:

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());
}

Así que estamos eliminando unique , index de las definiciones del modelo Mongoose y creando todos los índices usando createIndexes (https://docs.mongodb.com/manual/reference/command/createIndexes/)

También encontré este problema al actualizar de Mongoose 4.11.7 a 5.1.4. Intenté eliminar ?retryWrites=true de mi URI de conexión, sin suerte. Finalmente descubrí que estaba usando index:true en una propiedad _id como esta:

_id: {
    type: String,
    required: true,
    index: true
  }

Eliminar index:true solucionó el problema. También encontré este problema que menciona la solución: https://github.com/Automattic/mongoose/issues/2303. Solo publicar en caso de que otra persona se encuentre con el mismo problema.

Para mí, encontré este problema cuando tenía retryWrites=true en mi cadena de conexión y Schema.index({ someKey: 1 }) en mi modelo.

En mongo shell, la ejecución de db.adminCommand( { getParameter: 1, featureCompatibilityVersion: 1 } ) devolvió { "featureCompatibilityVersion" : { "version" : "3.6" } } .

Luego bajé la calificación featureCompatibilityVersion a 3.4 de mongodb ejecutando db.adminCommand( { setFeatureCompatibilityVersion: "3.4" } ) en mongo shell y ejecuté mi aplicación nuevamente con retryWrites=true y Schema.index({ someKey: 1 }) como mencionado anteriormente.

Después de asegurarme de que el índice se había creado correctamente, actualicé featureCompatibilityVersion a 3.6 de mongodb ejecutando db.adminCommand( { setFeatureCompatibilityVersion: "3.6" } ) , y luego ejecuté mi aplicación nuevamente. El error de dependencia cíclica ya no apareció.

Encontré el problema. No tiene nada que ver con Atlas, o retryWrites , o featureCompatibilityVersion . Tiene mucho que ver con intentar crear un índice en _id . Guión de reproducción mínima:

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());
}

Abrirá un PR en el controlador mongodb para esto

bonito @ vkarpov15

@ vkarpov15 💪

Arreglé el mío eliminando la cadena de consulta retryWrites de la cadena de conexión.

antes de
mongodb: // sa :@ cluster0-shard-00-00-ljpyb.mongodb. net: 27017 , cluster0-shard-00-01-ljpyb.mongodb. net: 27017 , cluster0-shard-00-02-ljpyb.mongodb. net: 27017 / test? ssl = true & replicaSet = Cluster0-shard-0 & authSource = admin & retryWrites = true

después
mongodb: // sa :@ cluster0-shard-00-00-ljpyb.mongodb. net: 27017 , cluster0-shard-00-01-ljpyb.mongodb. red: 27017 , cluster0-shard-00-02-ljpyb.mongodb. net: 27017 / test? ssl = true & replicaSet = Cluster0-shard-0 & authSource = admin

espero que esto ayude.

Intente eliminar cualquier índice que tenga en _id @otisidev . Entonces, si tiene algo como new Schema({ _id: {type: String, index: true} }) o schema.index({ _id: 1 }) , elimínelo.

@ vkarpov15 Creo que puede haber dos problemas aquí. No tengo ningún índice en _id en ninguna parte de mi proyecto y seguía viendo este error hasta que eliminé ?retryWrites del URI. Haré un proyecto que demuestre eso. Independientemente, esto realmente parece un problema con el controlador mongodb y no con Mongoose

@ vkarpov15 Aquí hay un script que produce este problema sin ningún índice en _id :

Mangosta: v5.1.5
Nodo: 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()

Establecer un campo de índice para:

index: { type: 'hashed', unique: true }

También siempre desencadena este problema

Sí, esto parece ser un problema legítimo: he escaneado mi base de código en busca de índices incorrectos y todavía parece volver a ocurrir. Se rebajó a 5.1.0 y parece funcionar bien.

Enlaces a https://github.com/Automattic/mongoose/issues/6469 - algunos pasos de reproducción más.

He visto el error.

_email_ : {
tipo: Cadena,
requerido: verdadero,
_ único: verdadero _
},
.......

credentialSchema.index ({ _email_ : 1, dominio: 1, ipAddress: 1, contraseña: -1});

Tuve que eliminar Unique de la definición del modelo.

@AndrewBarba gracias por la reproducción, encontré otro problema como node-mongodb-native # 1740, consulte https://github.com/mongodb/node-mongodb-native/pull/1758 . Esta solución terminará en mongoose una vez que se publique una nueva versión del controlador mongodb.

Encontré el mismo problema al usar Atlas, pero todo estaba bien localmente. Una solución rápida, como sugirió alguien, es eliminar el parámetro ?retryWrites=true , y ahora todo está bien.

Debería arreglarse en 5.1.8

Tuve un problema con MongoDB Atlas y GridStore, la operación de escritura no funcionaba hasta que eliminé "retryWrites = true".

¿Fue útil esta página
0 / 5 - 0 calificaciones