Mongoose: Erro: dependência cíclica detectada

Criado em 8 fev. 2018  ·  40Comentários  ·  Fonte: Automattic/mongoose

Executando a versão mais recente do Node.js no macOS. Também executando a versão mais recente do Mongoose.

Vendo Error: cyclic dependency detected literalmente sem nenhuma maneira de depurar. Tudo aponta de volta para o Mangusto. Alguma sugestão? Começou a acontecer hoje.

/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

Comentários muito úteis

Pode confirmar - remover retryWrites fez o problema desaparecer, mesmo com o "antigo" mongodb:// URI.

Todos 40 comentários

Qual foi o problema original aqui?

Tente incluir o campo que precisa ser atualizado em vez do objeto inteiro.

Eu também tenho esse problema, mesma linha de código.
C: \ Users \ Rowan \ Onedrive \ code \ react \ gradeable \ frontendnode_modules \ mongoose \ lib \ utils.js: 417
jogue err;

@ nparsons08 Ping. Você pode nos dizer se acabou sendo um problema para você, se você encontrou uma solução alternativa (além de fazer o downgrade para uma versão anterior do mangusto) ou se resolveu de outra maneira?

O mesmo aqui e absolutamente nenhuma maneira de rastrear.

O erro vem e vai.

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)

Atualmente com o mesmo problema. Alguma ideia de como resolver isso.

Bloquear isso porque "Atualmente com o mesmo problema" é muito vago para ser acionado. Abra um novo problema e siga o modelo de problema.

pessoal, acho que encontrei a causa - aparentemente está relacionado ao mongodb 3.6 (recentemente atualizei do 3.2 para o 3.6 e o ​​mongoose foi atualizado para o 5.x também) ...

então eu não conseguia mais executar meu aplicativo, estava recebendo esses erros de dependência cíclica ... a única solução que funcionou para mim foi adicionar autoIndex: false em mongoose.connect - mas fazendo portanto, meus índices não estavam mais sendo criados, mesmo depois de usar ensureIndex() posteriormente no aplicativo - isso acabaria resultando nos mesmos erros de dependência cíclica.

Resumindo, eu consegui consertar removendo todos os atributos INDEX de dentro dos meus modelos e anexando-os ao modelo depois, assim:

antes

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

depois de

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

E, mais importante, remover o atributo INDEX dos índices compostos, ou seja:

antes

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

depois de

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

espero que isso ajude outros
Felicidades

Estou encontrando esse problema especificamente ao tentar adicionar índice em uma matriz:

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

Simplesmente adicionar esse prop / índice ao meu esquema está causando esse problema

ei @AndrewBarba .. tente adicionar o índice como mencionei, não no campo, mas no esquema e veja se funciona

@gustvao Na verdade, tentei primeiro, sem sorte :(

@AndrewBarba Eu tive esse mesmo problema. Usando o MongoClient, tive que usar:

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

Espero que isto ajude.

Acontece comigo quando tento adicionar um í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)

Criar um índice de texto em meu campo dá esse erro. 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

nó - 9.11.1
mangusto - 5.1.1 (mesmo com 5.0.8)
MongoDB - 3.6.2

Pode ser interessante notar, eu estava usando a estrutura mongodb+srv:// uri com algumas opções:

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

Depois de remover as opções de uri, o problema foi embora sem nenhuma outra alteração de código:

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

Pode confirmar - remover retryWrites fez o problema desaparecer, mesmo com o "antigo" mongodb:// URI.

Olá @ vkarpov15 ,

Qual é o impacto da remoção de retryWrites para o Atlas, isso é algo que o mangusto está fazendo internamente?

Abro este problema sobre retryWrites
https://github.com/Automattic/mongoose/issues/6469 (depois fechou .. pensei que estava resolvido)

Saudações,
Tarek

Oi
Também estou recebendo este erro após atualizar para a versão mais recente do mongoose. Não estou criando nenhum índice em nenhum dos meus esquemas. Agora meu aplicativo é tão grande que não consigo descobrir qual código está causando esse problema. No mangusto ^ 4.13.1 está funcionando bem.
/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/lib/utils.js:429
jogue err;
^

Erro: dependência cíclica detectada
em serializeObject (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:331:34)
em serializeInto (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:934:17)
em serializeObject (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:345:18)
em serializeInto (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:934:17)
em serializeObject (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:345:18)
em serializeInto (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:934:17)
em serializeObject (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:345:18)
em serializeInto (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:934:17)
em serializeObject (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:345:18)
em serializeInto (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:934:17)
em serializeObject (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:345:18)
em serializeInto (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:934:17)
em serializeObject (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:345:18)
em serializeInto (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:934:17)
em serializeObject (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:345:18)
em serializeInto (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:934:17)
em serializeObject (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:345:18)
em serializeInto (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:934:17)
em serializeObject (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:345:18)
em serializeInto (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:724:17)
em serializeObject (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:345:18)
em serializeInto (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:934:17)
em BSON.serialize (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/bson.js:63:28)
em Query.toBin (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/mongodb-core/lib/connection/commands.js:144:25)
em serializeCommands (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/mongodb-core/lib/connection/pool.js:1053:43)
em Pool.write (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/mongodb-core/lib/connection/pool.js:1269:3)
em executeWrite (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/mongodb-core/lib/wireprotocol/3_2_support.js:80:10)
em WireProtocol.insert (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/mongodb-core/lib/wireprotocol/3_2_support.js:91:3)
app [nodemon] travou - aguardando alterações no arquivo antes de iniciar ...

Irá investigar e verificar se a ativação de retryWrites causa esta falha.

Posso confirmar que remover &retryWrites=true do URI de conexão corrige o erro

Confirmado! remover &retryWrites=true trully corrige o erro

Funciona no Atlas: cluster MongoDB sem ?retryWrites=true

O script abaixo funciona bem para mim localmente e no Atlas. Modifique o script abaixo para reproduzir 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 o script abaixo para reproduzir este problema:

`` `const assert = require ('assert');
const mongoose = require ('mongoose');
mongoose.set ('debug', true);

const {Schema} = mangusto;

run (). then (() => console.log ('feito')). catch (error => console.error (error.stack));

função assíncrona run () {
esperar mongoose.connect ('mongodb + srv: // usuário: [email protected]/test? retryWrites = true', {dbName: 'db-name'});

const M = mongoose.model ('Teste', novo Esquema ({nome: {tipo: String, único: verdadeiro}}));

aguardar M.create ({nome: 'teste'});
console.log (aguarda M.findOne ());
}
`` `

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

Recebi o seguinte erro: Error: cyclic dependency detected

A única maneira que encontrei de manter retryWrites é usando a função createIndexes da API 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());
}

Portanto, estamos removendo unique , index das definições do modelo Mongoose e criando todos os índices usando createIndexes (https://docs.mongodb.com/manual/reference/command/createIndexes/)

Também tive esse problema ao atualizar do Mongoose 4.11.7 para o 5.1.4. Tentei remover ?retryWrites=true do meu URI de conexão, sem sorte. Finalmente descobri que estava usando index:true em uma propriedade _id como esta:

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

Remover index:true corrigiu o problema para mim. Também foi encontrado esse problema que menciona a solução: https://github.com/Automattic/mongoose/issues/2303. Apenas postar, caso outra pessoa tenha o mesmo problema.

Para mim, encontrei esse problema ao ter retryWrites=true em minha string de conexão e Schema.index({ someKey: 1 }) em meu modelo.

No shell mongo, a execução de db.adminCommand( { getParameter: 1, featureCompatibilityVersion: 1 } ) retornou { "featureCompatibilityVersion" : { "version" : "3.6" } } .

Então eu fiz downgrade de featureCompatibilityVersion para 3.4 do mongodb executando db.adminCommand( { setFeatureCompatibilityVersion: "3.4" } ) no shell do mongo e executei meu aplicativo novamente com retryWrites=true e Schema.index({ someKey: 1 }) as Mencionado acima.

Depois de garantir que o índice foi criado com êxito, atualizei featureCompatibilityVersion para 3.6 do mongodb executando db.adminCommand( { setFeatureCompatibilityVersion: "3.6" } ) e, em seguida, executei meu aplicativo novamente. O erro de dependência cíclica não apareceu mais.

Encontrou o problema. Não tem nada a ver com Atlas, ou retryWrites , ou featureCompatibilityVersion . Tem tudo a ver com a tentativa de criar um índice em _id . Roteiro de reprodução mínimo:

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

Irá abrir um PR no driver mongodb para isso

nice @ vkarpov15

@ vkarpov15 💪

Consertei o meu removendo retryWrites querystring da string de conexão.

antes
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

depois 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

espero que isto ajude.

Tente remover quaisquer índices que você tenha em _id @otisidev . Portanto, se você tiver algo como new Schema({ _id: {type: String, index: true} }) ou schema.index({ _id: 1 }) , remova-o.

@ vkarpov15 Acho que pode haver dois problemas aqui. Não tenho nenhum índice em _id em nenhum lugar do meu projeto e ainda estava vendo esse erro até remover ?retryWrites do URI. Vou fazer um projeto que mostra isso. Independentemente disso, isso realmente parece ser um problema com o driver mongodb e não com o Mongoose

@ vkarpov15 Aqui está um script que produz esse problema sem nenhum índice em _id :

Mongoose: v5.1.5
Nó: 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()

Definindo um campo de índice para:

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

Também sempre aciona esse problema

Sim, este parece ser um problema legítimo - eu fiz a varredura em minha base de código em busca de índices ruins e ainda parece ocorrer novamente. Baixado para 5.1.0 e parece funcionar bem.

Links para https://github.com/Automattic/mongoose/issues/6469 - mais algumas etapas de reprodução.

Eu vi o bug.

_email_ : {
tipo: String,
obrigatório: verdadeiro,
_ único: verdadeiro _
},
.......

credentialSchema.index ({ _email_ : 1, domínio: 1, ipAddress: 1, senha: -1});

Tive que remover o original da definição do modelo.

@AndrewBarba obrigado pela reprodução, encontrei outro problema como node-mongodb-native # 1740, consulte https://github.com/mongodb/node-mongodb-native/pull/1758 . Esta correção terminará no mongoose assim que uma nova versão do driver mongodb for lançada.

Eu encontrei o mesmo problema ao usar o atlas, mas tudo estava bem localmente. Uma solução rápida para isso, como alguém sugeriu, é remover o parâmetro ?retryWrites=true , e agora está tudo bem.

Deve ser corrigido em 5.1.8

Tive alguns problemas com MongoDB Atlas e GridStore, a operação de gravação não estava funcionando até que removi "retryWrites = true".

Esta página foi útil?
0 / 5 - 0 avaliações