Mongoose: Kesalahan: ketergantungan siklik terdeteksi

Dibuat pada 8 Feb 2018  ·  40Komentar  ·  Sumber: Automattic/mongoose

Menjalankan Node.js versi terbaru di macOS. Juga menjalankan versi terbaru dari Mongoose.

Melihat Error: cyclic dependency detected dengan benar-benar tidak ada cara untuk men-debug. Semuanya menunjuk kembali ke Mongoose. Ada saran? Mulai terjadi hari ini.

/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

Komentar yang paling membantu

Dapat mengonfirmasi - menghapus retryWrites membuat masalah hilang, bahkan dengan URI mongodb:// "lama".

Semua 40 komentar

Apa masalah aslinya di sini?

Cobalah untuk memasukkan bidang yang perlu diperbarui alih-alih seluruh objek.

Saya juga memiliki masalah ini, baris kode yang sama.
C: \ Users \ Rowan \ Onedrive \ code \ react \ gradeable \ frontendnode_modules \ mongoose \ lib \ utils.js: 417
melempar kesalahan;

@ nprima Ping. Dapatkah Anda memberi tahu kami apakah hal itu ternyata menjadi masalah di pihak Anda, Anda menemukan solusi (selain menurunkan ke versi luwak sebelumnya), atau Anda menyelesaikannya dengan cara lain?

Sama di sini dan sama sekali tidak ada cara untuk melacaknya.

Kesalahan datang dan pergi.

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)

Saat ini mengalami masalah yang sama. Tahu bagaimana menyelesaikan ini.

Mengunci ini karena "Saat ini mengalami masalah yang sama" terlalu kabur untuk ditindaklanjuti. Silakan buka masalah baru dan ikuti template masalah.

teman-teman, saya kira saya menemukan penyebabnya - tampaknya itu terkait dengan mongodb 3.6 (saya baru saja meningkatkan dari 3.2 ke 3.6 dan luwak ditingkatkan ke 5.x juga) ...

jadi saya tidak dapat menjalankan aplikasi saya lagi, saya mendapatkan kesalahan ketergantungan siklik ini ... satu-satunya solusi yang berhasil bagi saya adalah menambahkan autoIndex: false menjadi mongoose.connect - tetapi melakukan jadi indeks saya tidak dibuat lagi bahkan setelah menggunakan ensureIndex() nanti pada aplikasi - pada akhirnya akan menghasilkan kesalahan ketergantungan siklik yang sama ..

Singkat cerita saya berhasil memperbaikinya dengan menghapus semua atribut INDEX dari dalam model saya dan menambahkannya ke model setelahnya, seperti ini:

sebelum

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

setelah

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

AND, yang lebih penting, menghapus atribut INDEX dari indeks gabungan, yaitu:

sebelum

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

setelah

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

semoga ini membantu orang lain
Bersulang

Saya secara khusus mengalami masalah ini saat mencoba menambahkan indeks pada array:

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

Cukup menambahkan prop / index ke skema saya menyebabkan masalah ini

hai @AndrewBarba .. coba tambahkan indeks seperti yang saya sebutkan, bukan di lapangan tetapi di skema dan lihat apakah berhasil

@gustvao Saya benar-benar mencobanya dulu, tidak berhasil :(

@AndrewBarba Saya memiliki masalah yang sama. Menggunakan MongoClient saya harus menggunakan:

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

Semoga ini membantu.

Yang terjadi pada saya saat mencoba menambahkan indeks teks:

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

Membuat indeks teks di bidang saya memberikan kesalahan ini. Kode:

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

simpul - 9.11.1
luwak - 5.1.1 (sama dengan 5.0.8)
MongoDB - 3.6.2

Mungkin perlu diperhatikan, saya menggunakan struktur mongodb+srv:// uri dengan beberapa opsi:

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

Setelah saya menghapus opsi uri, masalahnya hilang tanpa perubahan kode lain:

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

Dapat mengonfirmasi - menghapus retryWrites membuat masalah hilang, bahkan dengan URI mongodb:// "lama".

Hai @ vkarp155 ,

Apa dampak dari menghapus retryWrites untuk Atlas, apakah ini sesuatu yang dilakukan luwak secara internal?

Saya membuka masalah tentang retryWrites ini
https://github.com/Automattic/mongoose/issues/6469 (lalu tutup .. sepertinya sudah terselesaikan)

Salam,
Tarek

Hai
Saya juga mendapatkan kesalahan ini setelah diperbarui ke versi luwak terbaru. Saya tidak membuat indeks apa pun di skema saya mana pun. Sekarang aplikasi saya sangat besar, saya tidak dapat mencari tahu, kode apa yang menyebabkan masalah ini. Di luwak ^ 4.13.1 berfungsi dengan baik.
/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/lib/utils.js:429
melempar kesalahan;
^

Kesalahan: ketergantungan siklik terdeteksi
di serializeObject (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:331:34)
di serializeInto (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:934:17)
di serializeObject (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:345:18)
di serializeInto (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:934:17)
di serializeObject (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:345:18)
di serializeInto (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:934:17)
di serializeObject (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:345:18)
di serializeInto (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:934:17)
di serializeObject (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:345:18)
di serializeInto (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:934:17)
di serializeObject (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:345:18)
di serializeInto (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:934:17)
di serializeObject (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:345:18)
di serializeInto (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:934:17)
di serializeObject (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:345:18)
di serializeInto (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:934:17)
di serializeObject (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:345:18)
di serializeInto (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:934:17)
di serializeObject (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:345:18)
di serializeInto (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:724:17)
di serializeObject (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:345:18)
di serializeInto (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:934:17)
di BSON.serialize (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/bson.js:63:28)
di Query.toBin (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/mongodb-core/lib/connection/commands.js:144:25)
di serializeCommands (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/mongodb-core/lib/connection/pool.js:1053:43)
di Pool.write (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/mongodb-core/lib/connection/pool.js:1269:3)
di executeWrite (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/mongodb-core/lib/wireprotocol/3_2_support.js:80:10)
di WireProtocol.insert (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/mongodb-core/lib/wireprotocol/3_2_support.js:91:3)
Aplikasi [nodemon] mogok - menunggu perubahan file sebelum memulai ...

Akan menyelidiki dan memeriksa apakah mengaktifkan retryWrites menyebabkan kerusakan ini.

Saya dapat mengonfirmasi bahwa menghapus &retryWrites=true dari URI koneksi memperbaiki kesalahan

Dikonfirmasi! menghapus &retryWrites=true benar-benar memperbaiki kesalahan

Bekerja pada Atlas: cluster MongoDB tanpa ?retryWrites=true

Skrip di bawah ini berfungsi dengan baik untuk saya baik secara lokal maupun melawan Atlas. Harap ubah skrip di bawah ini untuk mereproduksi masalah ini:

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

@bayu_joo

Harap ubah skrip di bawah ini untuk mereproduksi masalah ini:

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

const {Schema} = luwak;

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

fungsi asinkron run () {
menunggu mongoose.connect ('mongodb + srv: // user: [email protected]/test? retryWrites = true', {dbName: 'db-name'});

const M = mongoose.model ('Test', Skema baru ({name: {type: String, unique: true}}));

menunggu M.create ({name: 'test'});
console.log (menunggu M.findOne ());
}
``

Dengan kode ini dari @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());
}

Saya mendapat kesalahan berikut: Error: cyclic dependency detected

Satu-satunya cara yang saya temukan untuk mempertahankan retryWrites adalah menggunakan fungsi createIndexes dari 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());
}

Jadi kami menghapus unique , index dari definisi model Mongoose dan membuat semua indeks menggunakan createIndexes (https://docs.mongodb.com/manual/reference/command/createIndexes/)

Saya mengalami masalah ini juga memperbarui dari Mongoose 4.11.7 ke 5.1.4. Saya mencoba menghapus ?retryWrites=true dari URI koneksi saya, tidak berhasil. Akhirnya saya menemukan bahwa saya menggunakan index:true pada properti khusus _id seperti ini:

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

Menghapus index:true memperbaiki masalah saya. Juga ditemukan masalah ini yang menyebutkan solusinya: https://github.com/Automattic/mongoose/issues/2303. Hanya memposting jika ada orang lain yang mengalami masalah yang sama.

Bagi saya, saya mengalami masalah ini ketika memiliki retryWrites=true dalam string koneksi saya dan Schema.index({ someKey: 1 }) dalam model saya.

Dalam mongo shell, mengeksekusi db.adminCommand( { getParameter: 1, featureCompatibilityVersion: 1 } ) menghasilkan { "featureCompatibilityVersion" : { "version" : "3.6" } } .

Kemudian saya menurunkan featureCompatibilityVersion menjadi 3.4 dari mongodb dengan menjalankan db.adminCommand( { setFeatureCompatibilityVersion: "3.4" } ) di mongo shell dan menjalankan aplikasi saya lagi dengan retryWrites=true dan Schema.index({ someKey: 1 }) sebagai disebutkan di atas.

Setelah memastikan bahwa indeks telah berhasil dibuat, saya meningkatkan featureCompatibilityVersion menjadi 3.6 dari mongodb dengan menjalankan db.adminCommand( { setFeatureCompatibilityVersion: "3.6" } ) , dan kemudian menjalankan aplikasi saya lagi. Kesalahan ketergantungan siklik tidak muncul lagi.

Menemukan masalahnya. Ini tidak ada hubungannya dengan Atlas, atau retryWrites , atau featureCompatibilityVersion . Ini ada hubungannya dengan mencoba membuat indeks pada _id . Skrip repro minimal:

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

Akan membuka PR di driver mongodb untuk ini

bagus @ vkarpov15

@ Vkarpov15 💪

Saya memperbaiki milik saya dengan menghapus querystring retryWrites dari string koneksi.

sebelum
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

setelah
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

semoga ini membantu.

Coba hapus indeks apa pun yang Anda miliki di _id @otisidev . Jadi jika Anda memiliki sesuatu seperti new Schema({ _id: {type: String, index: true} }) atau schema.index({ _id: 1 }) tolong hapus itu.

@ vkarpov15 Saya pikir mungkin ada dua masalah di sini. Saya tidak memiliki indeks apa pun di _id di mana pun dalam proyek saya dan masih melihat kesalahan ini sampai saya menghapus ?retryWrites dari URI. Saya akan membuat proyek yang menunjukkan itu. Terlepas dari itu, tampaknya ini benar-benar masalah dengan pengemudi mongodb dan bukan Mongoose

@ vkarpov15 Berikut ini skrip yang menghasilkan masalah ini tanpa indeks apa pun pada _id :

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

Mengatur bidang indeks ke:

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

Juga selalu memicu masalah ini

Ya, ini tampaknya masalah yang sah - Saya telah memindai basis kode saya untuk indeks yang buruk dan tampaknya masih terulang kembali. Diturunkan ke 5.1.0 dan tampaknya berfungsi dengan baik.

Tautan ke https://github.com/Automattic/mongoose/issues/6469 - beberapa langkah repro lagi.

Saya telah melihat bug.

_email_ : {
jenis: String,
wajib: benar,
_ unique: true _
},
.......

credentialSchema.index ({ _email_ : 1, domain: 1, ipAddress: 1, password: -1});

saya harus menghapus unik dari definisi model.

@AndrewBarba terima kasih atas repro, saya menemukan masalah lain seperti node-mongodb-native # 1740, lihat https://github.com/mongodb/node-mongodb-native/pull/1758 . Perbaikan ini akan berakhir di luwak setelah versi baru dari driver mongodb dirilis.

Saya mengalami masalah yang sama saat menggunakan atlas, tetapi semuanya baik-baik saja secara lokal. Perbaikan cepat di sekitarnya, seperti yang disarankan seseorang adalah menghapus parameter ?retryWrites=true , dan sekarang semuanya baik-baik saja.

Harus diperbaiki di 5.1.8

Saya mendapat beberapa masalah dengan MongoDB Atlas dan GridStore, operasi tulis tidak berfungsi sampai saya menghapus "retryWrites = true".

Apakah halaman ini membantu?
0 / 5 - 0 peringkat