Ausführen der neuesten Version von Node.js unter macOS. Läuft auch die neueste Version von Mongoose.
Sehen von Error: cyclic dependency detected
mit buchstäblich keiner Möglichkeit zum Debuggen. Alles deutet auf Mungo zurück. Irgendwelche Vorschläge? Begann heute zu geschehen.
/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)
Was war die ursprüngliche Ausgabe hier?
Versuchen Sie, das Feld einzuschließen, das anstelle des gesamten Objekts aktualisiert werden muss.
Ich habe auch dieses Problem, die gleiche Codezeile.
C: \ Users \ Rowan \ Onedrive \ code \ react \ gradeable \ frontendnode_modules \ mongoose \ lib \ utils.js: 417
werfen err;
@ nparsons08 Ping. Können Sie uns sagen, ob es sich für Sie als Problem herausgestellt hat, Sie eine Problemumgehung gefunden haben (abgesehen von einem Downgrade auf eine frühere Mungo-Version) oder es auf andere Weise gelöst haben?
Gleiches hier und absolut keine Möglichkeit, es aufzuspüren.
Der Fehler kommt und geht.
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)
Derzeit tritt das gleiche Problem auf. Irgendeine Idee, wie man das löst.
Das Sperren, weil "Derzeit das gleiche Problem auftritt" zu vage ist, um umsetzbar zu sein. Bitte öffnen Sie eine neue Ausgabe und folgen Sie der Ausgabevorlage.
Leute, ich denke, ich habe die Ursache gefunden - anscheinend hängt es mit Mongodb 3.6 zusammen (ich habe kürzlich ein Upgrade von 3.2 auf 3.6 durchgeführt und Mungo wurde auch auf 5.x aktualisiert) ...
Da ich meine App nicht mehr ausführen konnte, wurden diese zyklischen Abhängigkeitsfehler angezeigt. Die einzige Problemumgehung bestand darin, autoIndex: false
zu mongoose.connect
hinzuzufügen - aber das tat ich Daher wurden meine Indizes auch nach der Verwendung von ensureIndex()
später in der Anwendung nicht mehr erstellt - dies würde schließlich zu denselben zyklischen Abhängigkeitsfehlern führen.
Kurz gesagt, ich habe es geschafft, das Problem zu beheben, indem ich alle INDEX-Attribute aus meinen Modellen entfernt und sie anschließend wie folgt an das Modell angehängt habe:
Vor
client: { type: ObjectId, ref: 'tsCli', required: true, index: true },
nach
client: { type: ObjectId, ref: 'tsCli', required: true },
[...]
Schema.index({ client: 1 });
UND, was noch wichtiger ist, Entfernen des Attributs INDEX aus zusammengesetzten Indizes, dh:
Vor
Schema.index({ client: 1, code: 1 }, { unique: true, index: true, partialFilterExpression: { code: { $type: String } } });
nach
Schema.index({ client: 1, code: 1 }, { unique: true, partialFilterExpression: { code: { $type: String } } });
hoffe das hilft anderen
Prost
Dieses Problem tritt speziell beim Versuch auf, einen Index für ein Array hinzuzufügen:
...
tags: {
type: [String],
index: true
}
...
Das einfache Hinzufügen dieser Requisite / dieses Index zu meinem Schema verursacht dieses Problem
hey @AndrewBarba .. versuchen Sie, den Index wie erwähnt nicht auf dem Feld, sondern im Schema hinzuzufügen, und
@gustvao Ich habe das tatsächlich zuerst versucht, kein Glück :(
@ AndrewBarba Ich hatte das gleiche Problem. Mit MongoClient musste ich verwenden:
Collection.createIndexes([
{
key: { email: 1 },
name: 'user_email',
unique: true
}
])
Hoffe das hilft.
Passiert mir beim Versuch, einen Textindex hinzuzufügen:
/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)
Das Erstellen eines Textindex für mein Feld führt zu diesem Fehler. Code:
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
Knoten - 9.11.1
Mungo - 5.1.1 (wie bei 5.0.8)
MongoDB - 3.6.2
Es könnte erwähnenswert sein, dass ich die mongodb+srv://
uri-Struktur mit einigen Optionen verwendet habe:
mongodb+srv://user:[email protected]?readPreference=primaryPreferred&retryWrites=true
Nachdem ich die Uri-Optionen entfernt hatte, verschwand das Problem ohne weitere Codeänderungen:
mongodb+srv://user:[email protected]
Kann bestätigen - das Entfernen von retryWrites
hat das Problem behoben, selbst mit dem "alten" URI mongodb://
.
Hi @ vkarpov15 ,
Welche Auswirkungen hat das Entfernen von retryWrites für Atlas? Ist dies etwas, was Mungo intern tut?
Ich öffne diese Ausgabe über retryWrites
https://github.com/Automattic/mongoose/issues/6469 (dann geschlossen .. dachte, es wurde gelöst)
Grüße,
Tarek
Hallo
Ich erhalte diesen Fehler auch nach der Aktualisierung auf die neueste Mungo-Version. Ich erstelle keinen Index in einem meiner Schemas. Jetzt ist meine Anwendung so groß, dass ich nicht herausfinden kann, welcher Code dieses Problem verursacht. Auf Mungo ^ 4.13.1 funktioniert einwandfrei.
/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/lib/utils.js:429
werfen err;
^
Fehler: Zyklische Abhängigkeit erkannt
at serializeObject (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:331:34)
at serializeInto (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:934:17)
at serializeObject (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:345:18)
at serializeInto (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:934:17)
at serializeObject (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:345:18)
at serializeInto (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:934:17)
at serializeObject (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:345:18)
at serializeInto (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:934:17)
at serializeObject (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:345:18)
at serializeInto (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:934:17)
at serializeObject (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:345:18)
at serializeInto (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:934:17)
at serializeObject (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:345:18)
at serializeInto (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:934:17)
at serializeObject (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:345:18)
at serializeInto (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:934:17)
at serializeObject (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:345:18)
at serializeInto (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:934:17)
at serializeObject (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:345:18)
at serializeInto (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:724:17)
at serializeObject (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:345:18)
at serializeInto (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:934:17)
at BSON.serialize (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/bson.js:63:28)
at Query.toBin (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/mongodb-core/lib/connection/commands.js:144:25)
at serializeCommands (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/mongodb-core/lib/connection/pool.js:1053:43)
at Pool.write (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/mongodb-core/lib/connection/pool.js:1269:3)
at executeWrite (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/mongodb-core/lib/wireprotocol/3_2_support.js:80:10)
at WireProtocol.insert (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/mongodb-core/lib/wireprotocol/3_2_support.js:91:3)
[nodemon] App abgestürzt - Warten auf Dateiänderungen vor dem Start ...
Untersucht und prüft, ob das Einschalten von retryWrites
diesen Absturz verursacht.
Ich kann bestätigen, dass das Entfernen von &retryWrites=true
aus dem Verbindungs-URI den Fehler behebt
Bestätigt! Das Entfernen von &retryWrites=true
behebt den Fehler vollständig
Funktioniert mit Atlas: MongoDB-Cluster ohne ?retryWrites=true
Das folgende Skript funktioniert sowohl lokal als auch gegen Atlas. Bitte ändern Sie das folgende Skript, um dieses Problem zu reproduzieren:
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
Bitte ändern Sie das folgende Skript, um dieses Problem zu reproduzieren:
`` `const assert = require ('assert');
const mongoose = require ('mongoose');
mongoose.set ('debug', true);
const {Schema} = Mungo;
run (). then (() => console.log ('done')). catch (error => console.error (error.stack));
asynchrone Funktion run () {
warte auf mongoose.connect ('mongodb + srv: // user: [email protected]/test? retryWrites = true', {dbName: 'db-name'});
const M = mongoose.model ('Test', neues Schema ({name: {type: String, unique: true}}));
warte auf M.create ({name: 'test'});
console.log (warte auf M.findOne ());
}}
`` `
Mit diesem Code von @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());
}
Ich habe den folgenden Fehler erhalten: Error: cyclic dependency detected
Die einzige Möglichkeit, die retryWrites
beizubehalten, ist die Verwendung der Funktion createIndexes
von der Mongodb-API:
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());
}
Wir entfernen also unique
, index
aus Mongoose-Modelldefinitionen und erstellen alle Indizes mit createIndexes (https://docs.mongodb.com/manual/reference/command/createIndexes/).
Ich bin auch auf dieses Problem gestoßen, als ich von Mongoose 4.11.7 auf 5.1.4 aktualisiert habe. Ich habe versucht, ?retryWrites=true
aus meiner Verbindungs-URI zu entfernen, kein Glück. Schließlich stellte ich fest, dass ich index:true
für eine benutzerdefinierte _id
-Eigenschaft wie diese verwendete:
_id: {
type: String,
required: true,
index: true
}
Das Entfernen von index:true
das Problem für mich behoben. Es wurde auch dieses Problem gefunden, in dem die Lösung erwähnt wird: https://github.com/Automattic/mongoose/issues/2303. Nur das Posten, falls jemand anderes auf dasselbe Problem stößt.
Für mich ist dieses Problem aufgetreten, als ich retryWrites=true
in meiner Verbindungszeichenfolge und Schema.index({ someKey: 1 })
in meinem Modell hatte.
In der Mongo-Shell ergab die Ausführung von db.adminCommand( { getParameter: 1, featureCompatibilityVersion: 1 } )
{ "featureCompatibilityVersion" : { "version" : "3.6" } }
.
Dann stufte ich die featureCompatibilityVersion
auf 3.4
von mongodb herab, indem ich db.adminCommand( { setFeatureCompatibilityVersion: "3.4" } )
in der Mongo-Shell ausführte, und führte meine Anwendung erneut mit retryWrites=true
und Schema.index({ someKey: 1 })
as aus oben erwähnt.
Nachdem ich sichergestellt hatte, dass der Index erfolgreich erstellt wurde, habe ich die featureCompatibilityVersion
durch Ausführen von db.adminCommand( { setFeatureCompatibilityVersion: "3.6" } )
auf 3.6
von mongodb aktualisiert und dann meine Anwendung erneut ausgeführt. Der zyklische Abhängigkeitsfehler wurde nicht mehr angezeigt.
Fand das Problem. Es hat nichts mit Atlas oder retryWrites
oder featureCompatibilityVersion
zu tun. Es hat alles damit zu tun, einen Index für _id
zu erstellen. Minimales Repro-Skript:
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());
}
Öffnet dafür eine PR im Mongodb-Treiber
nice @ vkarpov15
@ vkarpov15 💪
Ich habe meine behoben, indem ich den Querryring retryWrites aus der Verbindungszeichenfolge entfernt habe.
Vor
mongodb: // sa :
nach
mongodb: // sa :
hoffe das hilft.
Versuchen Sie, alle Indizes zu entfernen, die Sie für _id
@otisidev haben . Wenn Sie also etwas wie new Schema({ _id: {type: String, index: true} })
oder schema.index({ _id: 1 })
, entfernen Sie das bitte.
@ vkarpov15 Ich denke, hier kann es zwei Probleme geben. Ich habe nirgendwo in meinem Projekt Indizes für _id
und habe diesen Fehler immer noch gesehen, bis ich ?retryWrites
aus dem URI entfernt habe. Ich werde ein Projekt machen, das das zeigt. Unabhängig davon scheint dies wirklich ein Problem mit dem Mongodb-Fahrer und nicht mit Mongoose zu sein
@ vkarpov15 Hier ist ein Skript, das dieses Problem ohne Index für _id
:
Mungo: v5.1.5
Knoten: 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()
Festlegen eines Indexfelds auf:
index: { type: 'hashed', unique: true }
Löst dieses Problem auch immer aus
Ja, dies scheint ein legitimes Problem zu sein - ich habe meine Codebasis nach schlechten Indizes durchsucht und es scheint immer noch wieder aufzutreten. Herabgestuft auf 5.1.0
und es scheint gut zu funktionieren.
Links zu https://github.com/Automattic/mongoose/issues/6469 - ein paar weitere Repro-Schritte.
Ich habe den Fehler gesehen.
_email_ : {
Typ: String,
erforderlich: wahr,
_ einzigartig: wahr _
},
....... .......
credentialSchema.index ({
Ich musste Unique aus der Modelldefinition entfernen.
@ AndrewBarba danke für den Repro, ich habe ein anderes Problem wie Node-Mongodb-Native # 1740 gefunden, siehe https://github.com/mongodb/node-mongodb-native/pull/1758 . Dieser Fix wird in Mungo enden, sobald eine neue Version des Mongodb-Treibers veröffentlicht wird.
Ich habe das gleiche Problem bei der Verwendung von Atlas festgestellt, aber lokal war alles in Ordnung. Eine schnelle Lösung, wie jemand vorgeschlagen hat, ist das Entfernen des Parameters ?retryWrites=true
, und jetzt ist alles in Ordnung.
Sollte in 5.1.8 behoben werden
Ich habe ein Problem mit MongoDB Atlas und GridStore. Der Schreibvorgang funktionierte erst, als ich "retryWrites = true" entfernte.
Hilfreichster Kommentar
Kann bestätigen - das Entfernen von
retryWrites
hat das Problem behoben, selbst mit dem "alten" URImongodb://
.