Mongoose: рддреНрд░реБрдЯрд┐: рдЪрдХреНрд░реАрдп рдирд┐рд░реНрднрд░рддрд╛ рдХрд╛ рдкрддрд╛ рдЪрд▓рд╛

рдХреЛ рдирд┐рд░реНрдорд┐рдд 8 рдлрд╝рд░ре░ 2018  ┬╖  40рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: Automattic/mongoose

MacOS рдкрд░ Node.js рдХрд╛ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдЪрд▓рд╛ рд░рд╣рд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ 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 рдХреЛ рд╣рдЯрд╛рдиреЗ рд╕реЗ рд╕рдорд╕реНрдпрд╛ рджреВрд░ рд╣реЛ рдЧрдИ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ "рдкреБрд░рд╛рдиреЗ" mongodb:// URI рдХреЗ рд╕рд╛рде рднреАред

рд╕рднреА 40 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдпрд╣рд╛рдВ рдореВрд▓ рдореБрджреНрджрд╛ рдХреНрдпрд╛ рдерд╛?

рдЙрд╕ рдлрд╝реАрд▓реНрдб рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ рдЬрд┐рд╕реЗ рд╕рдВрдкреВрд░реНрдг рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдмрдЬрд╛рдп рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдореИрдВ рднреА рдЗрд╕ рдореБрджреНрджреЗ, рдХреЛрдб рдХреА рдПрдХ рд╣реА рдкрдВрдХреНрддрд┐ рд╣реИред
C: \ Users \ рд░реЛрд╡рди \ Onedrive \ рдХреЛрдб \ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ \ gradeable \ frontendnode_modules \ рдиреЗрд╡рд▓рд╛ \ 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)

рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдПрдХ рд╣реА рдореБрджреНрджреЗ рдХрд╛ рдЕрдиреБрднрд╡ред рдХрд┐рд╕реА рднреА рд╡рд┐рдЪрд╛рд░ рдпрд╣ рдХреИрд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред

рдЗрд╕реЗ рд▓реЙрдХ рдХрд░рдирд╛ рдХреНрдпреЛрдВрдХрд┐ "рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдЕрдиреБрднрд╡ рдХрд░рдирд╛" рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрд╕реНрдкрд╖реНрдЯ рд╣реИред рдХреГрдкрдпрд╛ рдПрдХ рдирдпрд╛ рдореБрджреНрджрд╛ рдЦреЛрд▓реЗрдВ рдФрд░ рд╕рдорд╕реНрдпрд╛ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╛ рдкрд╛рд▓рди рдХрд░реЗрдВред

рджреЛрд╕реНрддреЛрдВ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореБрдЭреЗ рдЗрд╕рдХрд╛ рдХрд╛рд░рдг рдорд┐рд▓ рдЧрдпрд╛ рд╣реИ - рдЬрд╛рд╣рд┐рд░ рд╣реИ рдХрд┐ рдпрд╣ рдореЛрдВрдЧреЛрдбрдм 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 рдХреЛ рд╣рдЯрд╛рдиреЗ рд╕реЗ рд╕рдорд╕реНрдпрд╛ рджреВрд░ рд╣реЛ рдЧрдИ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ "рдкреБрд░рд╛рдиреЗ" mongodb:// URI рдХреЗ рд╕рд╛рде рднреАред

рд╣рд╛рдп @ vkarpov15 ,

рдПрдЯрд▓рд╕ рдХреЗ рд▓рд┐рдП рд░рд┐рдЯреНрд░реАрд╡рд╛рдЗрдЯреНрд╕ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХрд╛ рдХреНрдпрд╛ рдкреНрд░рднрд╛рд╡ рд╣реИ, рдХреНрдпрд╛ рдпрд╣ рдХреБрдЫ рдРрд╕рд╛ рд╣реИ рдЬреЛ рдЖрдо рддреМрд░ рдкрд░ рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рдХрд░ рд░рд╣рд╛ рд╣реИ?

рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдкреБрдирд░реНрдкреНрд░рдпрд╛рд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЦреЛрд▓рддрд╛ рд╣реВрдВ
https://github.com/Automattic/mongoose/issues/6469 (рдлрд┐рд░ рдЗрд╕реЗ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ .. рд╕реЛрдЪрд╛ рдХрд┐ рдЗрд╕реЗ рд╣рд▓ рдХрд░ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ)

рд╕рд╛рджрд░,
рддрд╛рд░реЗрдХ

рдирдорд╕реНрддреЗ
рдореБрдЭреЗ рдпрд╣ рддреНрд░реБрдЯрд┐ рдирд╡реАрдирддрдо рдореЛрдВрдЧреЛрдЬрд╝ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдЕрдкрдбреЗрдЯ рдХреЗ рдмрд╛рдж рднреА рдорд┐рд▓ рд░рд╣реА рд╣реИред рдореИрдВ рдЕрдкрдиреЗ рдХрд┐рд╕реА рднреА рд╕реНрдХреАрдорд╛ рдореЗрдВ рдХреЛрдИ рдЗрдВрдбреЗрдХреНрд╕ рдирд╣реАрдВ рдмрдирд╛ рд░рд╣рд╛ рд╣реВрдВред рдЕрдм рдореЗрд░рд╛ рдЖрд╡реЗрджрди рдЗрддрдирд╛ рдмрдбрд╝рд╛ рд╣реИ, рдореБрдЭреЗ рдпрд╣ рдкрддрд╛ рдирд╣реАрдВ рдЪрд▓ рдкрд╛ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдХреМрди рд╕рд╛ рдХреЛрдб рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдХрд╛рд░рдг рдмрди рд░рд╣рд╛ рд╣реИред рдПрдХ рдЖрджрдордЦреЛрд░ ^ 4.13.1 рдареАрдХ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИред
/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/lib/utils.js:429
рдЧрд▓рддреА рд╕реЗ рдлреЗрдВрдХрдирд╛;
^

рддреНрд░реБрдЯрд┐: рдЪрдХреНрд░реАрдп рдирд┐рд░реНрднрд░рддрд╛ рдХрд╛ рдкрддрд╛ рдЪрд▓рд╛
рдХреНрд░рдордмрджреНрдз рдХрд░реЗрдВ рдкрд░
рдХреНрд░рдордмрджреНрдз рдХрд░реЗрдВ рдкрд░
serializeObject (/User/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:345:18) рдкрд░
рдХреНрд░рдордмрджреНрдз рдХрд░реЗрдВ рдкрд░
рдХреНрд░рдордмрджреНрдз рдХрд░реЗрдВ рдкрд░
рдХреНрд░рдордмрджреНрдз рдХрд░реЗрдВ рдкрд░
serializeObject (/User/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:345:18) рдкрд░
рдХреНрд░рдордмрджреНрдз рдХрд░реЗрдВ рдкрд░
serializeObject (/User/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:345:18) рдкрд░
рдХреНрд░рдордмрджреНрдз рдХрд░реЗрдВ рдкрд░
рдХреНрд░рдордмрджреНрдз рдХрд░реЗрдВ рдкрд░
рдХреНрд░рдордмрджреНрдз рдХрд░реЗрдВ рдкрд░
рдХреНрд░рдордмрджреНрдз рдХрд░реЗрдВ рдкрд░
рдХреНрд░рдордмрджреНрдз рдХрд░реЗрдВ рдкрд░
рдХреНрд░рдордмрджреНрдз рдХрд░реЗрдВ рдкрд░
serializeInto (/User/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:934:17) рдкрд░
рдХреНрд░рдордмрджреНрдз рдХрд░реЗрдВ рдкрд░
serializeInto (/User/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:934:17) рдкрд░
serializeObject (/User/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:345:18) рдкрд░
рдХреНрд░рдордмрджреНрдз рдХрд░реЗрдВ рдкрд░
serializeObject (/User/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:345:18) рдкрд░
рдХреНрд░рдордмрджреНрдз рдХрд░реЗрдВ рдкрд░
BSON.serialize (/User/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/bib/connection/pool.js:1053:43) рдкрд░
рдкреВрд▓ рдореЗрдВред
executeWrite (/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/mongodb-core/lib/wireprotocol/3_2_support.js:80:10) рдкрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВ
WireProtocol.insert (/User/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/mongodb-core/lib/wireprotocol/3_2_support.js:91:3) рдкрд░
[рд╕рдВрдЬреНрдЮрд╛] рдРрдк рдХреНрд░реИрд╢ рд╣реЛ рдЧрдпрд╛ - рд╢реБрд░реВ рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдлрд╝рд╛рдЗрд▓ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣рд╛ рд╣реИ ...

рдЬрд╛рдБрдЪ рдХрд░реЗрдЧрд╛ рдФрд░ рдЬрд╛рдБрдЪ рдХрд░реЗрдЧрд╛ рдХрд┐ рдХреНрдпрд╛ retryWrites рдЪрд╛рд▓реВ рдХрд░рдиреЗ рд╕реЗ рдпрд╣ рджреБрд░реНрдШрдЯрдирд╛ рд╣реЛрддреА рд╣реИред

рдореИрдВ рдкреБрд╖реНрдЯрд┐ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдХрдиреЗрдХреНрд╢рди рд╕реЗ &retryWrites=true рдХреЛ рд╣рдЯрд╛рдХрд░ URI рддреНрд░реБрдЯрд┐ рдХреЛ рдареАрдХ рдХрд░рддрд╛ рд╣реИ

рдХреА рдкреБрд╖реНрдЯрд┐ рдХреА! &retryWrites=true рдЯреНрд░реВрд▓реА рдХреЛ рд╣рдЯрд╛рдиреЗ рд╕реЗ рддреНрд░реБрдЯрд┐ рдареАрдХ рд╣реЛ рдЬрд╛рддреА рд╣реИ

рдПрдЯрд▓рд╕ рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ: 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 mongoose = рдЖрд╡рд╢реНрдпрдХрддрд╛ ('mongoose');
mongoose.set ('рдбрд┐рдмрдЧ', рд╕рдЪ);

const {рд╕реНрдХреАрдорд╛} = рдореЛрдВрдЧреЛрдЬрд╝;

рд░рди ()ред рддрдм () => рдХрдВрд╕реЛрд▓.рд▓реЙрдЧ () рдХрд┐рдпрд╛ тАЩ))ред рдкрдХрдбрд╝рдирд╛ (рддреНрд░реБрдЯрд┐ => рдХрдВрд╕реЛрд▓. рдлреЗрд░рд░ (рддреНрд░реБрдЯрд┐.рд╕реНрдЯреИрдХ));

async рдлрд╝рдВрдХреНрд╢рди рд░рди () {
рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВ

const M = mongoose.model ('рдЯреЗрд╕реНрдЯ', рдирдИ рд╕реНрдХреАрдорд╛ ({рдирд╛рдо: {рдкреНрд░рдХрд╛рд░: рд╕реНрдЯреНрд░рд┐рдВрдЧ, рдЕрджреНрд╡рд┐рддреАрдп: рд╕рддреНрдп}}));

рдкреНрд░рддреАрдХреНрд╖рд┐рдд M.create ({рдирд╛рдо: 'рдкрд░реАрдХреНрд╖рдг'});
рдХрдВрд╕реЛрд▓.рд▓реЙрдЧ (рдкреНрд░рддреАрдХреНрд╖рд╛рд░рдд 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 mongbb┬о рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИ:

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

рдЗрд╕рд▓рд┐рдП рд╣рдо Mongoose рдореЙрдбрд▓ рдкрд░рд┐рднрд╛рд╖рд╛рдУрдВ рд╕реЗ unique , index рдирд┐рдХрд╛рд▓ рд░рд╣реЗ рд╣реИрдВ рдФрд░ createIndexes (https://docs.mongodb.com/manual/reference/command/candeIndexes/) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рднреА рд╕реВрдЪрдХрд╛рдВрдХ рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВред

рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ Mongoose 4.11.7 рд╕реЗ 5.1.4 рдореЗрдВ рдЕрджреНрдпрддрди рдХрд┐рдпрд╛ рдЧрдпрд╛ред рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдХрдиреЗрдХреНрд╢рди URI рд╕реЗ ?retryWrites=true рдирд┐рдХрд╛рд▓рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рдХреЛрдИ рднрд╛рдЧреНрдп рдирд╣реАрдВред рдЕрдВрдд рдореЗрдВ рдореБрдЭреЗ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдореИрдВ рдЗрд╕ рддрд░рд╣ рд╕реЗ 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 }) рд╣реЛрдиреЗ рдкрд░ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдореЗрдВ рднрд╛рдЧ рдЧрдпрд╛ред

рдореЛрдВрдЧреЛ рдЦреЛрд▓ рдореЗрдВ, рдХреНрд░рд┐рдпрд╛рдиреНрд╡рд┐рдд db.adminCommand( { getParameter: 1, featureCompatibilityVersion: 1 } ) рд▓реМрдЯреЗ { "featureCompatibilityVersion" : { "version" : "3.6" } } ред

рдлрд┐рд░ рдореИрдВрдиреЗ featureCompatibilityVersion рд╕реЗ 3.4 mongodb рдХреЛ db.adminCommand( { setFeatureCompatibilityVersion: "3.4" } ) 3.4 рдХреЛ рдореВрдВрдЧ рд╢реЗрд▓ рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдХреЗ рдбрд╛рдЙрдирдЧреНрд░реЗрдб рдХрд┐рдпрд╛ рдФрд░ 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());
}

рдЗрд╕рдХреЗ рд▓рд┐рдП рдореЛрдВрдЧреЛрдбрдм рдбреНрд░рд╛рдЗрд╡рд░ рдореЗрдВ рдПрдХ рдкреАрдЖрд░ рдЦреЛрд▓реЗрдЧрд╛

рдЕрдЪреНрдЫрд╛ @ vkarpov15

@ vkarpov15 15

рдореИрдВрдиреЗ рдХрдиреЗрдХреНрд╢рди рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕реЗ рд░реАрдЯреНрд░реАрд╡рд╛рдЗрдЯреНрд╕ рдХреНрд▓реЗрд░реАрд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рд╣рдЯрд╛рдХрд░ рдореЗрд░рд╛ рддрдп рдХрд┐рдпрд╛ред

рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ
рдордВрджреЛрджрдм: // рд╕рд╛ :@ Cluster0-рдареАрдХрд░рд╛-00-00-ljpyb.mongodbред рдиреЗрдЯ: 27017 , рдХреНрд▓рд╕реНрдЯрд░0-рд╢рд╛рд░реНрдж-00-01-ljpyb.mongodbред рдиреЗрдЯ: 27017 , рдХреНрд▓рд╕реНрдЯрд░0-рд╢рд╛рд░реНрдж-00-02-ljpyb.mongodbред рдиреЗрдЯ: 27017 / рдкрд░реАрдХреНрд╖рдг? ssl = true рдФрд░ рдкреНрд░рддрд┐рдХреГрддрд┐ = Cluster0-shard-0 & OrdSource = рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдФрд░ рдкреБрдирдГ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ = рд╕рд╣реА

рдЙрдкрд░рд╛рдВрдд
рдордВрджреЛрджрдм: // рд╕рд╛ :@ Cluster0-рдареАрдХрд░рд╛-00-00-ljpyb.mongodbред рдиреЗрдЯ: 27017 , рдХреНрд▓рд╕реНрдЯрд░0-рд╢рд╛рд░реНрдж-00-01-ljpyb.mongodbред рдиреЗрдЯ: 27017 , рдХреНрд▓рд╕реНрдЯрд░0-рд╢рд╛рд░реНрдж-00-02-ljpyb.mongodbред рд╢реБрджреНрдз: 27017 / рдкрд░реАрдХреНрд╖рдг ssl = рд╕рдЪ рдФрд░ replicaSet = Cluster0-рдареАрдХрд░рд╛ -0 рдФрд░ authSource = рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ

рдЙрдореНрдореАрдж рд╣реИ рдХреА рдпрд╣ рдорджрдж рдХрд░реЗрдЧрд╛ред

рдЖрдкрдХреЗ рдкрд╛рд╕ _id @otisidev рдХреЗ рдХрд┐рд╕реА рднреА рдЗрдВрдбреЗрдХреНрд╕ рдХреЛ рдирд┐рдХрд╛рд▓рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред рддреЛ рдЕрдЧрд░ рдЖрдкрдХреЗ рдкрд╛рд╕ new Schema({ _id: {type: String, index: true} }) рдпрд╛ schema.index({ _id: 1 }) рддреЛ рдХреГрдкрдпрд╛ рдирд┐рдХрд╛рд▓ рджреЗрдВред

@ vkarpov15 рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣рд╛рдВ рджреЛ рдореБрджреНрджреЗ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдореЗрд░реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдХрд╣реАрдВ рднреА _id рдкрд░ рдХреЛрдИ рдЗрдВрдбреЗрдХреНрд╕ рдирд╣реАрдВ рд╣реИ рдФрд░ рдореИрдВ рдЕрднреА рднреА рдЗрд╕ рддреНрд░реБрдЯрд┐ рдХреЛ рджреЗрдЦ рд░рд╣рд╛ рдерд╛ рдЬрдм рддрдХ рдХрд┐ рдореИрдВрдиреЗ URI рд╕реЗ ?retryWrites рдирд╣реАрдВ рдирд┐рдХрд╛рд▓ рджрд┐рдпрд╛ред рдореИрдВ рдПрдХ рдРрд╕рд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдКрдВрдЧрд╛ рдЬреЛ рджрд┐рдЦрд╛рддрд╛ рд╣реИред рдмрд╛рд╡рдЬреВрдж, рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореЛрдВрдЧреЛрдбрдм рдбреНрд░рд╛рдЗрд╡рд░ рдХреЗ рд╕рд╛рде рдПрдХ рдореБрджреНрджрд╛ рдЬреИрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рди рдХрд┐ рдорд╛рдирдЧреЛ

@ 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 рдХреЗ рд▓рд┐рдВрдХ - рдХреБрдЫ рдФрд░ рд░рд┐рдкреНрд░реЛ рд╕реНрдЯреЗрдкреНрд╕ред

рдореИрдВрдиреЗ рдмрдЧ рджреЗрдЦрд╛ рд╣реИред

_рдореИрд▓_ : {
рдкреНрд░рдХрд╛рд░: рд╕реНрдЯреНрд░рд┐рдВрдЧ,
рдЖрд╡рд╢реНрдпрдХ: рд╕рдЪ рд╣реИ,
_ рдЕрджреНрд╡рд┐рддреАрдп: рд╕рдЪ _
},
.......

credentialSchema.index ({ _email_ : 1, domain: 1, ipAddress: 1, рдкрд╛рд╕рд╡рд░реНрдб: -1});

рдореБрдЭреЗ рдореЙрдбрд▓ рдкрд░рд┐рднрд╛рд╖рд╛ рд╕реЗ рдЕрджреНрд╡рд┐рддреАрдп рдХреЛ рд╣рдЯрд╛рдирд╛ рдкрдбрд╝рд╛ред

@AndrewBarba рд░рд┐рдкреНрд░реЛ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдореБрдЭреЗ рдиреЛрдб-рдореЛрдВрдЧреЛрдбрдм-рджреЗрд╢реА # 1740 рдЬреИрд╕рд╛ рдПрдХ рдФрд░ рдореБрджреНрджрд╛ рдорд┐рд▓рд╛, https://github.com/mongodb/node-mongodb-native/pull/1n8 рджреЗрдЦреЗрдВ ред рдореЛрдВрдЧреЛрдбрдм рдбреНрд░рд╛рдЗрд╡рд░ рдХрд╛ рдирдпрд╛ рд╕рдВрд╕реНрдХрд░рдг рдЬрд╛рд░реА рд╣реЛрддреЗ рд╣реА рдпрд╣ рдлрд┐рдХреНрд╕ рдорд╛рдирд╕реВрди рдореЗрдВ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рдПрдЧрд╛ред

рдореБрдЭреЗ рдПрдЯрд▓рд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдПрдХ рд╣реА рдореБрджреНрджреЗ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛, рд▓реЗрдХрд┐рди рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рд╕рдм рдХреБрдЫ рдареАрдХ рдерд╛ред рдЗрд╕рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдПрдХ рддреНрд╡рд░рд┐рдд рд╕реБрдзрд╛рд░, рдЬреИрд╕рд╛ рдХрд┐ рдХрд┐рд╕реА рдиреЗ рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ рд╣реИ рдХрд┐ рдкреИрд░рд╛рдореАрдЯрд░ ?retryWrites=true рдХреЛ рд╣рдЯрд╛ рд░рд╣рд╛ рд╣реИ, рдФрд░ рдЕрдм рдЪреАрдЬреЗрдВ рдареАрдХ рд╣реИрдВред

5.1.8 рдореЗрдВ рддрдп рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП

рдореБрдЭреЗ MongoDB Atlas рдФрд░ GridStore рдХреЗ рд╕рд╛рде рдХреБрдЫ рд╕рдорд╕реНрдпрд╛ рдорд┐рд▓реА, рдЬрдм рддрдХ рдореИрдВрдиреЗ "retryWrites =" рдХреЛ рдирд╣реАрдВ рд╣рдЯрд╛ рджрд┐рдпрд╛, рддрдм рддрдХ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдХрд╛рд░реНрдп рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рдерд╛ред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

dcolens picture dcolens  ┬╖  44рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

floatingLomas picture floatingLomas  ┬╖  61рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

dmmalam picture dmmalam  ┬╖  93рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

wshaver picture wshaver  ┬╖  50рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

adeelzaman picture adeelzaman  ┬╖  82рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ