Mongoose: Ошибка: ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½Π° цикличСская Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ

Π‘ΠΎΠ·Π΄Π°Π½Π½Ρ‹ΠΉ Π½Π° 8 Ρ„Π΅Π²Ρ€. 2018  Β·  40ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ  Β·  Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: Automattic/mongoose

Запуск послСднСй вСрсии Node.js Π½Π° macOS. Π’Π°ΠΊΠΆΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ послСдняя вСрсия Mongoose.

Π£Π²ΠΈΠ΄Π΅Ρ‚ΡŒ Error: cyclic dependency detected Π±ΡƒΠΊΠ²Π°Π»ΡŒΠ½ΠΎ Π±Π΅Π· возмоТности ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ. ВсС ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° ΠœΠ°Π½Π³ΡƒΡΡ‚Π°. КакиС-Π»ΠΈΠ±ΠΎ прСдлоТСния? ΠΠ°Ρ‡Π°Π»ΠΎΡΡŒ сСгодня.

/Users/nickparsons/Code/winds-2.0/api/src/node_modules/mongoose/lib/utils.js:417
        throw err;
        ^

Error: cyclic dependency detected
    at serializeObject (/Users/nickparsons/Code/winds-2.0/api/src/node_modules/bson/lib/bson/parser/serializer.js:296:33)
    at serializeInto (/Users/nickparsons/Code/winds-2.0/api/src/node_modules/bson/lib/bson/parser/serializer.js:776:17)
    at serializeObject (/Users/nickparsons/Code/winds-2.0/api/src/node_modules/bson/lib/bson/parser/serializer.js:308:18)
    at serializeInto (/Users/nickparsons/Code/winds-2.0/api/src/node_modules/bson/lib/bson/parser/serializer.js:776:17)
    at serializeObject (/Users/nickparsons/Code/winds-2.0/api/src/node_modules/bson/lib/bson/parser/serializer.js:308:18)
    at serializeInto (/Users/nickparsons/Code/winds-2.0/api/src/node_modules/bson/lib/bson/parser/serializer.js:776:17)
    at serializeObject (/Users/nickparsons/Code/winds-2.0/api/src/node_modules/bson/lib/bson/parser/serializer.js:308:18)
    at serializeInto (/Users/nickparsons/Code/winds-2.0/api/src/node_modules/bson/lib/bson/parser/serializer.js:776:17)
    at serializeObject (/Users/nickparsons/Code/winds-2.0/api/src/node_modules/bson/lib/bson/parser/serializer.js:308:18)
    at serializeInto (/Users/nickparsons/Code/winds-2.0/api/src/node_modules/bson/lib/bson/parser/serializer.js:776:17)
    at serializeObject (/Users/nickparsons/Code/winds-2.0/api/src/node_modules/bson/lib/bson/parser/serializer.js:308:18)
    at serializeInto (/Users/nickparsons/Code/winds-2.0/api/src/node_modules/bson/lib/bson/parser/serializer.js:776:17)
    at serializeObject (/Users/nickparsons/Code/winds-2.0/api/src/node_modules/bson/lib/bson/parser/serializer.js:308:18)
    at serializeInto (/Users/nickparsons/Code/winds-2.0/api/src/node_modules/bson/lib/bson/parser/serializer.js:776:17)
    at serializeObject (/Users/nickparsons/Code/winds-2.0/api/src/node_modules/bson/lib/bson/parser/serializer.js:308:18)
    at serializeInto (/Users/nickparsons/Code/winds-2.0/api/src/node_modules/bson/lib/bson/parser/serializer.js:776:17)
    at serializeObject (/Users/nickparsons/Code/winds-2.0/api/src/node_modules/bson/lib/bson/parser/serializer.js:308:18)
    at serializeInto (/Users/nickparsons/Code/winds-2.0/api/src/node_modules/bson/lib/bson/parser/serializer.js:776:17)
    at serializeObject (/Users/nickparsons/Code/winds-2.0/api/src/node_modules/bson/lib/bson/parser/serializer.js:308:18)
    at serializeInto (/Users/nickparsons/Code/winds-2.0/api/src/node_modules/bson/lib/bson/parser/serializer.js:618:17)
    at serializeObject (/Users/nickparsons/Code/winds-2.0/api/src/node_modules/bson/lib/bson/parser/serializer.js:308:18)
    at serializeInto (/Users/nickparsons/Code/winds-2.0/api/src/node_modules/bson/lib/bson/parser/serializer.js:776:17)
confirmed-bug underlying library issue

Π‘Π°ΠΌΡ‹ΠΉ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

ΠœΠΎΠ³Ρƒ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€Π΄ΠΈΡ‚ΡŒ - ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ retryWrites Ρ€Π΅ΡˆΠΈΠ»ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ, Π΄Π°ΠΆΠ΅ со "старым" URI mongodb:// .

ВсС 40 ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’ Ρ‡Π΅ΠΌ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π»Π°ΡΡŒ ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½Π°Ρ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°?

ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΏΠΎΠ»Π΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ, Π° Π½Π΅ вСсь ΠΎΠ±ΡŠΠ΅ΠΊΡ‚.

Π£ мСня Ρ‚ΠΎΠΆΠ΅ Π΅ΡΡ‚ΡŒ эта ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°, Ρ‚Π° ΠΆΠ΅ строка ΠΊΠΎΠ΄Π°.
C: \ Users \ Rowan \ Onedrive \ code \ react \ gradeable \ frontendnode_modules \ mongoose \ lib \ utils.js: 417
Π±Ρ€ΠΎΡΠΈΡ‚ΡŒ ΠΎΡˆΠΈΠ±ΠΊΡƒ;

@ nparsons08 Пинг. ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π»ΠΈ Π²Ρ‹ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ Π½Π°ΠΌ, Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π»ΠΈ это оказалось ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ с вашСй стороны, Π²Ρ‹ нашли ΠΎΠ±Ρ…ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡƒΡ‚ΡŒ (ΠΏΠΎΠΌΠΈΠΌΠΎ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° Π½Π° Π±ΠΎΠ»Π΅Π΅ Ρ€Π°Π½Π½ΡŽΡŽ Π²Π΅Ρ€ΡΠΈΡŽ мангуста) ΠΈΠ»ΠΈ Π²Ρ‹ Ρ€Π΅ΡˆΠΈΠ»ΠΈ Π΅Π΅ Π΄Ρ€ΡƒΠ³ΠΈΠΌ способом?

Π’ΠΎ ΠΆΠ΅ самоС здСсь ΠΈ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ возмоТности ΠΎΡ‚ΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ.

Ошибка ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ ΠΈ ΡƒΡ…ΠΎΠ΄ΠΈΡ‚.

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)

Π’ настоящСС врСмя Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Ρ‚Π° ΠΆΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°. Π•ΡΡ‚ΡŒ ΠΈΠ΄Π΅ΠΈ, ΠΊΠ°ΠΊ это Ρ€Π΅ΡˆΠΈΡ‚ΡŒ.

Π‘Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ° ΠΈΠ·-Π·Π° Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Ρ„Ρ€Π°Π·Π° Β«Π’ настоящСС врСмя Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Ρ‚Π° ΠΆΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°Β» слишком расплывчата, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΅Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠŸΠΎΠΆΠ°Π»ΡƒΠΉΡΡ‚Π°, ΠΎΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ Π½ΠΎΠ²ΡƒΡŽ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ ΠΈ слСдуйтС ΡˆΠ°Π±Π»ΠΎΠ½Ρƒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹.

рСбята, я Π΄ΡƒΠΌΠ°ΡŽ, Ρ‡Ρ‚ΠΎ нашСл ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρƒ - ΠΏΠΎ-Π²ΠΈΠ΄ΠΈΠΌΠΎΠΌΡƒ, это связано с mongodb 3.6 (я Π½Π΅Π΄Π°Π²Π½ΠΎ обновился с 3.2 Π΄ΠΎ 3.6, Π° мангуст Ρ‚ΠΎΠΆΠ΅ Π±Ρ‹Π» ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ Π΄ΠΎ 5.x) ...

поэтому я большС Π½Π΅ ΠΌΠΎΠ³ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ своС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, я ΠΏΠΎΠ»ΡƒΡ‡Π°Π» эти цикличСскиС ошибки зависимости ... СдинствСнный ΠΎΠ±Ρ…ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡƒΡ‚ΡŒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ сработал для мСня, - это Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ autoIndex: false Π² mongoose.connect - Π½ΠΎ поэтому ΠΌΠΎΠΈ индСксы большС Π½Π΅ создавались Π΄Π°ΠΆΠ΅ послС использования ensureIndex() ΠΏΠΎΠ·ΠΆΠ΅ Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ - это Π² ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΌ ΠΈΡ‚ΠΎΠ³Π΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ Ρ‚Π΅ΠΌ ΠΆΠ΅ ошибкам цикличСской зависимости ..

ΠšΠΎΡ€ΠΎΡ‡Π΅ говоря, ΠΌΠ½Π΅ ΡƒΠ΄Π°Π»ΠΎΡΡŒ ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ это, ΡƒΠ΄Π°Π»ΠΈΠ² всС Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ INDEX ΠΈΠ·Π½ΡƒΡ‚Ρ€ΠΈ ΠΌΠΎΠΈΡ… ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΠ² ΠΈΡ… ΠΊ ΠΌΠΎΠ΄Π΅Π»ΠΈ впослСдствии, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

Π΄ΠΎ

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

послС

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

И, Ρ‡Ρ‚ΠΎ Π±ΠΎΠ»Π΅Π΅ Π²Π°ΠΆΠ½ΠΎ, ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° INDEX ΠΈΠ· составных индСксов, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ:

Π΄ΠΎ

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

послС

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

надСюсь, это ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Π΄Ρ€ΡƒΠ³ΠΈΠΌ
ΡƒΡ€Π°

Π― ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°ΡŽΡΡŒ с этой ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ ΠΏΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ индСкс Π² массив:

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

ΠŸΡ€ΠΎΡΡ‚ΠΎΠ΅ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ этой ΠΎΠΏΠΎΡ€Ρ‹ / индСкса Π² мою схСму Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ эту ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ

ΠΏΡ€ΠΈΠ²Π΅Ρ‚ @AndrewBarba ... ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ индСкс, ΠΊΠ°ΠΊ я ΡƒΠΆΠ΅ ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π», Π½Π΅ Π² ΠΏΠΎΠ»Π΅, Π° Π² схСму ΠΈ посмотритС, Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π»ΠΈ ΠΎΠ½

@gustvao Π― Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Π» это сначала, Π½Π΅ ΠΏΠΎΠ²Π΅Π·Π»ΠΎ :(

@AndrewBarba Π£ мСня Π±Ρ‹Π»Π° такая ΠΆΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ MongoClient, ΠΌΠ½Π΅ ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ:

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

НадСюсь это ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚.

Π£ мСня случаСтся ΠΏΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ тСкстовый индСкс:

/Users/ashish/dictionary/js_server/node_modules/mongoose/lib/utils.js:429
        throw err;
        ^

Error: cyclic dependency detected
    at serializeObject (/Users/ashish/dictionary/js_server/node_modules/bson/lib/bson/parser/serializer.js:331:34)
    at serializeInto (/Users/ashish/dictionary/js_server/node_modules/bson/lib/bson/parser/serializer.js:934:17)
    at serializeObject (/Users/ashish/dictionary/js_server/node_modules/bson/lib/bson/parser/serializer.js:345:18)
    at serializeInto (/Users/ashish/dictionary/js_server/node_modules/bson/lib/bson/parser/serializer.js:934:17)
    at serializeObject (/Users/ashish/dictionary/js_server/node_modules/bson/lib/bson/parser/serializer.js:345:18)
    at serializeInto (/Users/ashish/dictionary/js_server/node_modules/bson/lib/bson/parser/serializer.js:934:17)
    at serializeObject (/Users/ashish/dictionary/js_server/node_modules/bson/lib/bson/parser/serializer.js:345:18)
    at serializeInto (/Users/ashish/dictionary/js_server/node_modules/bson/lib/bson/parser/serializer.js:934:17)
    at serializeObject (/Users/ashish/dictionary/js_server/node_modules/bson/lib/bson/parser/serializer.js:345:18)
    at serializeInto (/Users/ashish/dictionary/js_server/node_modules/bson/lib/bson/parser/serializer.js:934:17)
    at serializeObject (/Users/ashish/dictionary/js_server/node_modules/bson/lib/bson/parser/serializer.js:345:18)
    at serializeInto (/Users/ashish/dictionary/js_server/node_modules/bson/lib/bson/parser/serializer.js:934:17)
    at serializeObject (/Users/ashish/dictionary/js_server/node_modules/bson/lib/bson/parser/serializer.js:345:18)
    at serializeInto (/Users/ashish/dictionary/js_server/node_modules/bson/lib/bson/parser/serializer.js:934:17)
    at serializeObject (/Users/ashish/dictionary/js_server/node_modules/bson/lib/bson/parser/serializer.js:345:18)
    at serializeInto (/Users/ashish/dictionary/js_server/node_modules/bson/lib/bson/parser/serializer.js:934:17)
Emitted 'error' event at:
    at done (/Users/ashish/dictionary/js_server/node_modules/mongoose/lib/model.js:1051:13)
    at /Users/ashish/dictionary/js_server/node_modules/mongoose/lib/model.js:1093:16
    at /Users/ashish/dictionary/js_server/node_modules/mongoose/lib/utils.js:424:16
    at err (/Users/ashish/dictionary/js_server/node_modules/mongodb/lib/utils.js:415:14)
    at session.endSession (/Users/ashish/dictionary/js_server/node_modules/mongodb/lib/utils.js:399:27)
    at ClientSession.endSession (/Users/ashish/dictionary/js_server/node_modules/mongodb-core/lib/sessions.js:72:41)
    at executeCallback (/Users/ashish/dictionary/js_server/node_modules/mongodb/lib/utils.js:397:17)
    at err (/Users/ashish/dictionary/js_server/node_modules/mongodb/lib/utils.js:415:14)
    at executeCallback (/Users/ashish/dictionary/js_server/node_modules/mongodb/lib/utils.js:404:25)
    at err (/Users/ashish/dictionary/js_server/node_modules/mongodb/lib/utils.js:415:14)
    at executeCallback (/Users/ashish/dictionary/js_server/node_modules/mongodb/lib/utils.js:404:25)
    at handleCallback (/Users/ashish/dictionary/js_server/node_modules/mongodb/lib/utils.js:128:55)
    at /Users/ashish/dictionary/js_server/node_modules/mongodb/lib/db.js:1068:25
    at executeWrite (/Users/ashish/dictionary/js_server/node_modules/mongodb-core/lib/wireprotocol/3_2_support.js:82:5)
    at WireProtocol.insert (/Users/ashish/dictionary/js_server/node_modules/mongodb-core/lib/wireprotocol/3_2_support.js:91:3)
    at Server.insert (/Users/ashish/dictionary/js_server/node_modules/mongodb-core/lib/topologies/server.js:752:35)

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ тСкстового индСкса Π² ΠΌΠΎΠ΅ΠΌ ΠΏΠΎΠ»Π΅ Π΄Π°Π΅Ρ‚ эту ΠΎΡˆΠΈΠ±ΠΊΡƒ. Код:

WordSchema = new Schema({
  title: {
    type: String,
    required: true,
  },
  meanings: [MeaningSchema],
  keys: [String],
  tags: [String],
  language: String,
  createdAt: Date,
  updatedAt: Date
});

WordSchema.index({title: 'text'}); ---> Error
WordSchema.index({title: 1});      ---> Works fine

ΡƒΠ·Π΅Π» - 9.11.1
мангуст - 5.1.1 (Ρ‚ΠΎ ΠΆΠ΅ самоС с 5.0.8)
MongoDB - 3.6.2

Π‘Ρ‚ΠΎΠΈΡ‚ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ я использовал структуру mongodb+srv:// uri с нСсколькими ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ:

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

Как Ρ‚ΠΎΠ»ΡŒΠΊΠΎ я ΡƒΠ΄Π°Π»ΠΈΠ» ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ uri, ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° исчСзла Π±Π΅Π· ΠΊΠ°ΠΊΠΈΡ…-Π»ΠΈΠ±ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΊΠΎΠ΄Π°:

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

ΠœΠΎΠ³Ρƒ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€Π΄ΠΈΡ‚ΡŒ - ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ retryWrites Ρ€Π΅ΡˆΠΈΠ»ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ, Π΄Π°ΠΆΠ΅ со "старым" URI mongodb:// .

ΠŸΡ€ΠΈΠ²Π΅Ρ‚ @ vkarpov15!

Каково влияниС удалСния retryWrites для Atlas, это Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ мангуст Π΄Π΅Π»Π°Π΅Ρ‚ Π²Π½ΡƒΡ‚Ρ€ΠΈ?

Π― ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°ΡŽ этот вопрос ΠΎ retryWrites
https://github.com/Automattic/mongoose/issues/6469 (Π·Π°Ρ‚Π΅ΠΌ Π·Π°ΠΊΡ€Ρ‹Π» Π΅Π³ΠΎ .. Π΄ΡƒΠΌΠ°Π», Ρ‡Ρ‚ΠΎ это Ρ€Π΅ΡˆΠ΅Π½ΠΎ)

Π‘ Π£Π²Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ,
Π’Π°Ρ€Π΅ΠΊ

ΠŸΡ€ΠΈΠ²Π΅Ρ‚
Π― Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽ эту ΠΎΡˆΠΈΠ±ΠΊΡƒ послС обновлСния Π΄ΠΎ послСднСй вСрсии мангуста. Π― Π½Π΅ создаю индСкс Π½ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· своих схСм. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Π΅Π»ΠΈΠΊΠΎ, Ρ‡Ρ‚ΠΎ я Π½Π΅ ΠΌΠΎΠ³Ρƒ ΡƒΠ·Π½Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΎΠΉ ΠΊΠΎΠ΄ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ эту ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ. На mongoose ^ 4.13.1 Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ.
/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/lib/utils.js:429
Π±Ρ€ΠΎΡΠΈΡ‚ΡŒ ΠΎΡˆΠΈΠ±ΠΊΡƒ;
^

Ошибка: ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½Π° цикличСская Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ
Π² serializeObject (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:331:34)
Π² serializeInto (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:934:17)
Π² serializeObject (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:345:18)
Π² serializeInto (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:934:17)
Π² serializeObject (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:345:18)
Π² serializeInto (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:934:17)
Π² serializeObject (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:345:18)
Π² serializeInto (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:934:17)
Π² serializeObject (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:345:18)
Π² serializeInto (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:934:17)
Π² serializeObject (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:345:18)
Π² serializeInto (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:934:17)
Π² serializeObject (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:345:18)
Π² serializeInto (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:934:17)
Π² serializeObject (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:345:18)
Π² serializeInto (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:934:17)
Π² serializeObject (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:345:18)
Π² serializeInto (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:934:17)
Π² serializeObject (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:345:18)
Π² serializeInto (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:724:17)
Π² serializeObject (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:345:18)
Π² serializeInto (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:934:17)
Π² BSON.serialize (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/bson.js:63:28)
Π² Query.toBin (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/mongodb-core/lib/connection/commands.js:144:25)
Π² serializeCommands (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/mongodb-core/lib/connection/pool.js:1053:43)
Π² Pool.write (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/mongodb-core/lib/connection/pool.js:1269:3)
Π² executeWrite (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/mongodb-core/lib/wireprotocol/3_2_support.js:80:10)
Π² WireProtocol.insert (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/mongodb-core/lib/wireprotocol/3_2_support.js:91:3)
ΠŸΡ€ΠΎΠΈΠ·ΠΎΡˆΠ΅Π» сбой прилоТСния [nodemon] - ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Ρ„Π°ΠΉΠ»Π° ΠΏΠ΅Ρ€Π΅Π΄ запуском ...

ΠœΡ‹ исслСдуСм ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠΌ, Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Π»ΠΈ этот сбой Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ retryWrites .

Π― ΠΌΠΎΠ³Ρƒ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€Π΄ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ &retryWrites=true ΠΈΠ· URI ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ устраняСт ΠΎΡˆΠΈΠ±ΠΊΡƒ

ΠŸΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΎ! ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ &retryWrites=true Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ исправляСт ΠΎΡˆΠΈΠ±ΠΊΡƒ

Π Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² Atlas: кластСр MongoDB Π±Π΅Π· ?retryWrites=true

НиТС скрипт ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΊΠ°ΠΊ локально, Ρ‚Π°ΠΊ ΠΈ ΠΏΡ€ΠΎΡ‚ΠΈΠ² Атласа. Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚Π΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π½ΠΈΠΆΠ΅ сцСнарий, Ρ‡Ρ‚ΠΎΠ±Ρ‹ воспроизвСсти эту ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ:

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

const { Schema } = mongoose;

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

async function run() {
  await mongoose.connect('mongodb+srv://user:[email protected]/test?retryWrites=true');

  const M = mongoose.model('Test', new Schema({ name: String }));

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

@ vkarpov15

Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚Π΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π½ΠΈΠΆΠ΅ сцСнарий, Ρ‡Ρ‚ΠΎΠ±Ρ‹ воспроизвСсти эту ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ:

`` const assert = require ('assert');
const mongoose = require ('мангуст');
mongoose.set ('ΠΎΡ‚Π»Π°Π΄ΠΊΠ°', ΠΏΡ€Π°Π²Π΄Π°);

const {Π‘Ρ…Π΅ΠΌΠ°} = мангуст;

run (). then (() => console.log ('Π³ΠΎΡ‚ΠΎΠ²ΠΎ')). catch (error => console.error (error.stack));

async function run () {
ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠ΅ mongoose.connect ('mongodb + srv: // ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ: [email protected]/test? retryWrites = true', {dbName: 'db-name'});

const M = mongoose.model ('Test', новая схСма ({name: {type: String, unique: true}}));

ΠΆΠ΄Π°Ρ‚ΡŒ M.create ({name: 'test'});
console.log (ΠΆΠ΄Π°Ρ‚ΡŒ M.findOne ());
}
``

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ этого ΠΊΠΎΠ΄Π° ΠΎΡ‚ @mykhaliuk :

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

const { Schema } = mongoose;

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

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

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

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

ΠŸΠΎΠ»ΡƒΡ‡ΠΈΠ»Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΎΡˆΠΈΠ±ΠΊΡƒ: Error: cyclic dependency detected

ЕдинствСнный способ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ я нашСл для поддСрТания retryWrites - это ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ createIndexes ΠΈΠ· 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());
}

Π˜Ρ‚Π°ΠΊ, ΠΌΡ‹ удаляСм unique , index ΠΈΠ· ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ Mongoose ΠΈ создаСм всС индСксы с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ createIndexes (https://docs.mongodb.com/manual/reference/command/createIndexes/)

Π― столкнулся с этой ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ с Mongoose 4.11.7 Π΄ΠΎ 5.1.4. Π― попытался ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ?retryWrites=true ΠΈΠ· своСго URI ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ, Π½Π΅ ΠΏΠΎΠ²Π΅Π·Π»ΠΎ. НаконСц, я понял, Ρ‡Ρ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ index:true Π² настраиваСмом свойствС _id Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

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

Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ index:true устранило ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ для мСня. Π’Π°ΠΊΠΆΠ΅ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½Π° эта ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ упоминаСтся Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅: https://github.com/Automattic/mongoose/issues/2303. ΠŸΡ€ΠΎΡΡ‚ΠΎ ΠΎΡ‚ΠΏΡ€Π°Π²ΡŒΡ‚Π΅ сообщСниС, Ссли ΠΊΡ‚ΠΎ-Ρ‚ΠΎ Π΅Ρ‰Π΅ столкнСтся с Ρ‚ΠΎΠΉ ΠΆΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ.

Для мСня, я столкнулся с этой ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ, имСя retryWrites=true Π² ΠΌΠΎΠ΅ΠΉ строкС ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΈ Schema.index({ someKey: 1 }) Π² ΠΌΠΎΠ΅ΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ.

Π’ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ΅ mongo Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ db.adminCommand( { getParameter: 1, featureCompatibilityVersion: 1 } ) Π²Π΅Ρ€Π½ΡƒΠ»ΠΎ { "featureCompatibilityVersion" : { "version" : "3.6" } } .

Π—Π°Ρ‚Π΅ΠΌ я ΠΏΠΎΠ½ΠΈΠ·ΠΈΠ» featureCompatibilityVersion Π΄ΠΎ 3.4 mongodb, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ² db.adminCommand( { setFeatureCompatibilityVersion: "3.4" } ) Π² ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ΅ mongo, ΠΈ снова запустил своС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ с retryWrites=true ΠΈ Schema.index({ someKey: 1 }) ΠΊΠ°ΠΊ упомянутоС Π²Ρ‹ΡˆΠ΅.

УбСдившись, Ρ‡Ρ‚ΠΎ индСкс Π±Ρ‹Π» ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ создан, я ΠΎΠ±Π½ΠΎΠ²ΠΈΠ» featureCompatibilityVersion Π΄ΠΎ 3.6 mongodb, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ² db.adminCommand( { setFeatureCompatibilityVersion: "3.6" } ) , Π° Π·Π°Ρ‚Π΅ΠΌ снова запустил своС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. Ошибка цикличСской зависимости большС Π½Π΅ появлялась.

НашСл ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ. Π­Ρ‚ΠΎ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ Π½ΠΈΡ‡Π΅Π³ΠΎ ΠΎΠ±Ρ‰Π΅Π³ΠΎ с Атласом, ΠΈΠ»ΠΈ retryWrites , ΠΈΠ»ΠΈ featureCompatibilityVersion . Π­Ρ‚ΠΎ связано с ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠΎΠΉ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ индСкс для _id . ΠœΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ сцСнарий воспроизвСдСния:

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

Error.stackTraceLimit = Infinity;

const { Schema } = mongoose;

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

async function run() {
  await mongoose.connect('mongodb://localhost:27017/test', {dbName: 'test'});

  const M = mongoose.model('Test', new Schema({ _id: { type: String, index: true } }));

  await M.create({ _id: 'abc' + Math.random() });
  console.log(await M.findOne());
}

ΠžΡ‚ΠΊΡ€ΠΎΠ΅Ρ‚ ΠΏΠΈΠ°Ρ€ Π² Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π΅ mongodb для этого

приятно @ vkarpov15

@ vkarpov15 πŸ’ͺ

Π― исправил свою, ΡƒΠ΄Π°Π»ΠΈΠ² строку запроса retryWrites ΠΈΠ· строки ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ.

Π΄ΠΎ
mongodb: // sa :@ cluster0-shard-00-00-ljpyb.mongodb. ΡΠ΅Ρ‚ΡŒ: 27017 , cluster0-shard-00-01-ljpyb.mongodb. ΡΠ΅Ρ‚ΡŒ: 27017 , cluster0-shard-00-02-ljpyb.mongodb. ΡΠ΅Ρ‚ΡŒ: 27017 / test? ssl = true & replicaSet = Cluster0-shard-0 & authSource = admin & retryWrites = true

послС
mongodb: // sa :@ cluster0-shard-00-00-ljpyb.mongodb. ΡΠ΅Ρ‚ΡŒ: 27017 , cluster0-shard-00-01-ljpyb.mongodb. ΡΠ΅Ρ‚ΡŒ: 27017 , cluster0-shard-00-02-ljpyb.mongodb. ΡΠ΅Ρ‚ΡŒ: 27017 / test? ssl = true & replicaSet = Cluster0-shard-0 & authSource = admin

надСюсь это ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚.

ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ всС ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠ΅ΡΡ Ρƒ вас индСксы Π½Π° _id @otisidev . ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, Ссли Ρƒ вас Π΅ΡΡ‚ΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π²Ρ€ΠΎΠ΄Π΅ new Schema({ _id: {type: String, index: true} }) ΠΈΠ»ΠΈ schema.index({ _id: 1 }) ΡƒΠ΄Π°Π»ΠΈΡ‚Π΅ это.

@ vkarpov15 Π― Π΄ΡƒΠΌΠ°ΡŽ, здСсь ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π΄Π²Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹. Π£ мСня Π½Π΅Ρ‚ индСксов для _id Π³Π΄Π΅-Π»ΠΈΠ±ΠΎ Π² ΠΌΠΎΠ΅ΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅, ΠΈ я всС Π΅Ρ‰Π΅ Π²ΠΈΠ΄Π΅Π» эту ΠΎΡˆΠΈΠ±ΠΊΡƒ, ΠΏΠΎΠΊΠ° я Π½Π΅ ΡƒΠ΄Π°Π»ΠΈΠ» ?retryWrites ΠΈΠ· URI. Π― сдСлаю ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ это продСмонстрируСт. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, это Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠΎΡ…ΠΎΠΆΠ΅ Π½Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ с Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠΌ mongodb, Π° Π½Π΅ с Mongoose

@ vkarpov15 Π’ΠΎΡ‚ сцСнарий, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ создаСт эту ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ Π±Π΅Π· индСкса Π½Π° _id :

ΠœΠ°Π½Π³ΡƒΡΡ‚: v5.1.5
Π£Π·Π΅Π»: v8.11.3

const mongoose = require('mongoose')
const { Schema } = mongoose

async function run() {
  try {
    await mongoose.connect('mongodb://localhost:27017/test?retryWrites=true', {
      dbName: 'mongoose-issue-6109'
    })

    const Model = mongoose.model('Model', new Schema({
      email: {
        type: String,
        index: {
          unique: true
        }
      }
    }))

    await Model.create({
      email: '[email protected]'
    })

    console.log(await Model.findOne())
  } catch(err) {
    console.error(err)
  }
}

run()

Установка поля индСкса Π½Π°:

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

Π’Π°ΠΊΠΆΠ΅ всСгда Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ эту ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ

Π”Π°, это ΠΏΠΎΡ…ΠΎΠΆΠ΅ Π½Π° Π·Π°ΠΊΠΎΠ½Π½ΡƒΡŽ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ - я просмотрСл свою ΠΊΠΎΠ΄ΠΎΠ²ΡƒΡŽ Π±Π°Π·Ρƒ Π½Π° Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ ΠΏΠ»ΠΎΡ…ΠΈΡ… индСксов, ΠΈ, ΠΏΠΎΡ…ΠΎΠΆΠ΅, это всС Π΅Ρ‰Π΅ повторяСтся. ПониТСн Π΄ΠΎ 5.1.0 ΠΈ, ΠΏΠΎΡ…ΠΎΠΆΠ΅, всС Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ.

Бсылки Π½Π° https://github.com/Automattic/mongoose/issues/6469 - Π΅Ρ‰Π΅ нСсколько шагов воспроизвСдСния.

Π― Π²ΠΈΠ΄Π΅Π» ΠΎΡˆΠΈΠ±ΠΊΡƒ.

_email_ : {
Ρ‚ΠΈΠΏ: String,
трСбуСтся: ΠΏΡ€Π°Π²Π΄Π°,
_ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎ: Π²Π΅Ρ€Π½ΠΎ _
},
.......

credentialSchema.index ({ _email_ : 1, Π΄ΠΎΠΌΠ΅Π½: 1, ipAddress: 1, ΠΏΠ°Ρ€ΠΎΠ»ΡŒ: -1});

ΠΌΠ½Π΅ ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈΠ· опрСдСлСния ΠΌΠΎΠ΄Π΅Π»ΠΈ.

@AndrewBarba, спасибо Π·Π° Https://github.com/mongodb/node-mongodb-native/pull/1758 . Π­Ρ‚ΠΎ исправлСниС окаТСтся Π² mongoose послС выпуска Π½ΠΎΠ²ΠΎΠΉ вСрсии Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π° mongodb.

Π― столкнулся с Ρ‚ΠΎΠΉ ΠΆΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ ΠΏΡ€ΠΈ использовании атласа, Π½ΠΎ локально всС Π±Ρ‹Π»ΠΎ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ. БыстроС исправлСниС этого, ΠΊΠ°ΠΊ ΠΊΡ‚ΠΎ-Ρ‚ΠΎ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΠ», ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ?retryWrites=true , ΠΈ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ всС Π² порядкС.

Π”ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ исправлСно Π² 5.1.8

Π£ мСня Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° с MongoDB Atlas ΠΈ GridStore, опСрация записи Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π»Π°, ΠΏΠΎΠΊΠ° я Π½Π΅ ΡƒΠ΄Π°Π»ΠΈΠ» retryWrites = true.

Π‘Ρ‹Π»Π° Π»ΠΈ эта страница ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ?
0 / 5 - 0 Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³ΠΈ