Mongoose: рдкрджрд╛рд╡рдирддрд┐ рдЪреЗрддрд╛рд╡рдиреА: 'рдУрдкрди ()' рдХреЛ рдиреЗрд╡рд▓рд╛> = 4.11.0 рдореЗрдВ рдкрджрд╛рд╡рдирдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рдХреЗ рдмрдЬрд╛рдп 'рдУрдкрдирдпреВрд░реА ()' рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 25 рдЬреВрди 2017  ┬╖  158рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: Automattic/mongoose

рдкрджрд╛рд╡рдирддрд┐ рдЪреЗрддрд╛рд╡рдиреА: open() рдХреЛ рдиреЗрд╡рд▓рд╛>= 4.11.0 рдореЗрдВ рдмрд╣рд┐рд╖реНрдХреГрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рдХреЗ рдмрдЬрд╛рдп openUri() рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдпрд╛ connect() рдпрд╛ createConnection() рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдкрд░ useMongoClient рд╡рд┐рдХрд▓реНрдк рд╕реЗрдЯ рдХрд░реЗрдВ createConnection()

рдиреЗрд╡рд▓рд╛ 4.11.0, рдореЛрдВрдЧреЛрдбреАрдмреА 2.2.29, рдиреЛрдбрдЬреЗрдПрд╕ 8.1.2

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдЗрд╕рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рдлрд┐рдХреНрд╕; " npm remove mongoose " рдлрд┐рд░ " npm install [email protected] --save " рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рд╣реЛ рдЧрдИред рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдирд╛ рд╣рдореЗрд╢рд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдХрд▓реНрдк рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред

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

+1, рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдЙрд╕ рдЪреЗрддрд╛рд╡рдиреА рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛рдВ рдареАрдХ рдХрд░рдирд╛ рд╣реИ

рдЪреЗрддрд╛рд╡рдиреА рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ Mongoose рдХреЗ рдЕрдВрджрд░ рдПрдХ рдХреЛрдб рдХреЗ рд▓рд┐рдП рд╣реИ, рдЬрдм рдХрдиреЗрдХреНрдЯрд┐рдВрдЧ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдПрдХ рдкреНрд░рддрд┐рдХреГрддрд┐ рд╕реЗрдЯ рд╣реЛрддрд╛ рд╣реИ:

Mongoose.prototype.connect = function() {
  var conn = this.connection;
  if ((arguments.length === 2 || arguments.length === 3) &&
      typeof arguments[0] === 'string' &&
      typeof arguments[1] === 'object' &&
      arguments[1].useMongoClient === true) {
    return conn.openUri(arguments[0], arguments[1], arguments[2]);
  }
  if (rgxReplSet.test(arguments[0]) || checkReplicaSetInUri(arguments[0])) {
    return new MongooseThenable(this, conn.openSet.apply(conn, arguments));
  }

  return new MongooseThenable(this, conn.open.apply(conn, arguments));
};

@tinovyatkin

рддреЛ рдлрд┐рд░, рдпрд╣ рдПрдХ рдмрдЧ рд╣реИ?

рдПрдХ рдмрдЧ рдХреА рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ, рдХреНрдпрд╛ рд╣рдо рд╡рд┐рдХрд▓реНрдкреЛрдВ рдореЗрдВ useMongoClient: true рдЬреЛрдбрд╝рдХрд░ рд╕рдорд╛рдзрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдЖрдк рддрдм MongoDB рдбреНрд░рд╛рдЗрд╡рд░ рд╕реЗ рдПрдХ рдкрджрд╛рд╡рдирддрд┐ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡рд╣ рдлреЗрдВрдХрддрд╛ рдирд╣реАрдВ рд╣реИ)

useMongoClient: true рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рд╕рдВрджреЗрд╢ рдЧрд╛рдпрдм рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рдореЗрд░реЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рд▓реЛрдб рд╣реЛрдирд╛ рдмрдВрдж рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВред рдЗрд╕реЗ рдЧрд╣рд░рд╛рдИ рд╕реЗ рдбрд┐рдмрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдЕрдкрдирд╛ рдХреЛрдб рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╕рд░реНрд╡реЛрддреНрддрдо рдкреНрд░рдерд╛рдУрдВ рдХреЛ рд╕реБрдирдирд╛ рдкрд╕рдВрдж рдХрд░реВрдВрдЧрд╛ред

рдореЗрд░рд╛ рдЖрд╡реЗрджрди рднреА рдКрдкрд░ рд╕реБрдЭрд╛рдП рдЧрдП рд╕рдорд╛рдзрд╛рди рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдЕрдм MyModel.find рд╡рд┐рдзрд┐ рдирд╣реАрдВ рдЪрд▓рд╛рддрд╛ рд╣реИ рдФрд░ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ рдФрд░ рдХреЛрдИ рдЯрд╛рдЗрдордЖрдЙрдЯ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИред

рдЕрдзрд┐рдХрд╛рдВрд╢ рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП "useMongoclient: true" рд╡рд┐рдХрд▓реНрдк рдХрд╛рдо рдирд╣реАрдВ рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░рдг рдЙрд╕ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд▓рд┐рдП рд╣реИ, рдкреНрд░рддреНрдпреЗрдХ рдиреЗрд╡рд▓рд╛ рдХрдиреЗрдХреНрд╢рди-рд╕рдВрдмрдВрдзрд┐рдд рдСрдмреНрдЬреЗрдХреНрдЯ рдбрдореА рдСрдмреНрдЬреЗрдХреНрдЯ рджреЗрддрд╛ рд╣реИ рдЬреЛ рдореЛрдВрдЧреЛрдбрдм рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реИ

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

const server = express();
mongoose.connect('mongodb://localhost/advisorDemoTestDB', { useMongoClient: true })
    .then(() => require('./db-init')(server))
    .catch(err => console.error(err));

рд▓реЗрдХрд┐рди рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛

рдкреНрд░рддрд┐рдХреГрддрд┐ рд╕реЗрдЯ рдХреЗ рдмрд┐рдирд╛ рднреА рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИред

рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реЛрдирд╛:

(node:4138) DeprecationWarning: `open()` is deprecated in mongoose >= 4.11.0,
 use `openUri()` instead, or set the `useMongoClient` option if using `connect()` 
or `createConnection()`

рд╡реИрд╕рд╛ рд╣реА...

рдореЗрд░реЗ рдореЛрдВрдЧреЛ рдХрдиреЗрдХреНрд╢рди рдореЗрдВ рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдХреЛрдб рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВ рдЕрдм рдХреБрдЫ рднреА рдирд╣реАрдВ рдкреВрдЫ рд╕рдХрддрд╛ред
{рдпреВрдЬрдореЛрдВрдЧреЛ рдХреНрд▓рд╛рдЗрдВрдЯ: рд╕рдЪ}ред
рдХрд┐рд╕реА рднреА рд╕реБрдЭрд╛рд╡ рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХреА рдЬрд╛рдПрдЧреА !!

рдкреНрд░рддрд┐рдХреГрддрд┐ рд╕реЗрдЯ рдХреЗ рд╕рд╛рде +1 рд╕рдорд╛рди, рдХреЛрдИ рд╢рд╛рд░реНрдбрд┐рдВрдЧ рдирд╣реАрдВ

+1

+1

+1

+1

+1

+1

+1

рдЗрд╕рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рдлрд┐рдХреНрд╕; " npm remove mongoose " рдлрд┐рд░ " npm install [email protected] --save " рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рд╣реЛ рдЧрдИред рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдирд╛ рд╣рдореЗрд╢рд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдХрд▓реНрдк рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред

+1

+1

рдореБрдЭреЗ 2 рд╕рдВрджреЗрд╢ рдорд┐рд▓рддреЗ рд╣реИрдВ:

(node:9260) DeprecationWarning: `open()` is deprecated in mongoose >= 4.11.0,
use `openUri()` instead, or set the `useMongoClient` option if using `connect()`
or `createConnection()`

Server started on port 3000

Db.prototype.authenticate method will no longer be available in the next major
release 3.x as MongoDB 3.6 will only allow auth against users in the admin db
and will no longer allow multiple credentials on a socket. Please authenticate
using MongoClient.connect with auth credentials.

рдкрд╣рд▓реА рддреНрд░реБрдЯрд┐ 4.11.0 рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреАред рджреВрд╕рд░реА рддреНрд░реБрдЯрд┐ рдиреЗрд╡рд▓рд╛ рдХреЗ рдкрд┐рдЫрд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рднреА рджрд┐рдЦрд╛рдИ рджреАред

plhosk, рджреВрд╕рд░рд╛ 4.11 рдореЗрдВ рддрдп рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдерд╛, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЕрднреА рднреА рд╣реИ, рдореЗрд░реЗ рд▓рд┐рдП рднреАред

+1

+1 рджреБрдЦ рдХреА рдмрд╛рдд рд╣реИред

рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╕рдорд╕реНрдпрд╛ рдХреЗ 4.10.8 рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ред рдХреГрдкрдпрд╛ npm install mongoose --save рдХреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реЗ 4.10.8 рдореЗрдВ рдмрджрд▓рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдЬрдм рддрдХ рдХрд┐ 11 рд╕реНрдерд┐рд░ рди рд╣реЛ рдЬрд╛рдПред

+1

+1

+1

+1

рдореБрдЭреЗ рдпрд╣ рдореБрджреНрджрд╛ рднреА рдорд┐рд▓рд╛ред
__рдиреЛрдб рд╕рдВрд╕реНрдХрд░рдг__: v6.10.0

__MongoDB__ рд╡рд╛рддрд╛рд╡рд░рдг: (рдореИрдВ рдореЛрдВрдЧреЛ рдбреЙрдХрдЯрд░ рдХрдВрдЯреЗрдирд░ рдХреЗ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдкрд░ рдЪрд▓рд╛)

2017-06-20T08:04:24.509+0000 I CONTROL  [initandlisten] db version v3.4.5
2017-06-20T08:04:24.509+0000 I CONTROL  [initandlisten] git version: 520b8f3092c48d934f0cd78ab5f40fe594f96863
2017-06-20T08:04:24.509+0000 I CONTROL  [initandlisten] OpenSSL version: OpenSSL 1.0.1t  3 May 2016
2017-06-20T08:04:24.509+0000 I CONTROL  [initandlisten] allocator: tcmalloc
2017-06-20T08:04:24.509+0000 I CONTROL  [initandlisten] modules: none
2017-06-20T08:04:24.509+0000 I CONTROL  [initandlisten] build environment:
2017-06-20T08:04:24.509+0000 I CONTROL  [initandlisten]     distmod: debian81
2017-06-20T08:04:24.509+0000 I CONTROL  [initandlisten]     distarch: x86_64
2017-06-20T08:04:24.509+0000 I CONTROL  [initandlisten]     target_arch: x86_64
2017-06-20T08:04:24.509+0000 I CONTROL  [initandlisten] options: { security: { authorization: "enabled" } }

рдореЗрд░рд╛ рдХрдиреЗрдХреНрд╢рди рд╡рд┐рдиреНрдпрд╛рд╕:

var dbURL = `mongodb://${dbHost}:${dbPort}/${dbName}?authSource=admin`;
var dbAuth = { 
    useMongoClient: false
    user: dbUser,
    pass: dbPass
}
mongoose.connect(dbURL, dbAuth);

рдЬрдм рдореИрдВ рдЭреВрдард╛ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП useMongoClient рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред рдиреЗрд╡рд▓рд╛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЪреЗрддрд╛рд╡рдирд┐рдпрд╛рдБ рджрд┐рдЦрд╛рддрд╛ рд╣реИ:

(node:7868) DeprecationWarning: `open()` is deprecated in mongoose >= 4.11.0, use `openUri()` instead, or set the `useMongoClient` option if using `connect()` or `createConnection()`
Express server listening on port 3222 in development mode
Db.prototype.authenticate method will no longer be available in the next major release 3.x as MongoDB 3.6 will only allow auth against users in the admin db and will no longer allow multiple credentials on a socket. Please authenticate u
sing MongoClient.connect with auth credentials.

рд▓реЗрдХрд┐рди рдпрд╣ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЬрдм рдореИрдВрдиреЗ рдЗрд╕реЗ true рдкрд░ рд╕реЗрдЯ рдХрд┐рдпрд╛, рддреЛ рдореБрдЭреЗ рдпрд╣ рддреНрд░реБрдЯрд┐ рдорд┐рд▓реА:

Unhandled rejection MongoError: not authorized on users to execute command { listIndexes: "sessions", cursor: {} }
    at Function.MongoError.create (<my project path>\node_modules\mongoose\node_modules\mongodb-core\lib\error.js:31:11)
    at queryCallback (<my project path>\node_modules\mongoose\node_modules\mongodb-core\lib\cursor.js:212:36)
    at <my project path>\node_modules\mongoose\node_modules\mongodb-core\lib\connection\pool.js:469:18
    at _combinedTickCallback (internal/process/next_tick.js:67:7)
    at process._tickCallback (internal/process/next_tick.js:98:9)

рдореИрдВ рдХрдиреЗрдХреНрд╢рди рдпреВрдЖрд░рдПрд▓ рд╕реЗ рднреА authSource=admin рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрднреА рднреА рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ

(рдиреЛрдб: 451) рдкрджрд╛рд╡рдирддрд┐ рдЪреЗрддрд╛рд╡рдиреА: open() рдиреЗрд╡рд▓рд╛ рдореЗрдВ рдкрджрд╛рд╡рдирдд рд╣реИ >= 4.11.0, рдЙрдкрдпреЛрдЧ
рдЗрд╕рдХреЗ рдмрдЬрд╛рдп openUri() , рдпрд╛ useMongoClient рд╡рд┐рдХрд▓реНрдк рд╕реЗрдЯ рдХрд░реЗрдВ рдпрджрд┐ connect() рдпрд╛ createConnection() рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ
Db.prototype.authenticate рд╡рд┐рдзрд┐ рдЕрдм рдЕрдЧрд▓реЗ рдкреНрд░рдореБрдЦ рдкреБрди: рдореЗрдВ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реЛрдЧреА
рд▓реАрдЬ 3.x рдХреНрдпреЛрдВрдХрд┐ MongoDB 3.6 рдХреЗрд╡рд▓ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ db рдФрд░ w . рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд╡рд┐рд░реБрджреНрдз рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛
рдмреАрдорд╛рд░ рдЕрдм рд╕реЙрдХреЗрдЯ рдкрд░ рдПрдХрд╛рдзрд┐рдХ рдкреНрд░рдорд╛рдг-рдкрддреНрд░реЛрдВ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИред рдХреГрдкрдпрд╛ M . рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рдорд╛рдгрд┐рдд рдХрд░реЗрдВ
ongoClient.connect рдкреНрд░рд╛рдорд╛рдгрд┐рдХ рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓ рдХреЗ рд╕рд╛рдеред

рдореБрдЭреЗ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдиреЗрд╡рд▓рд╛ рд╕рдВрд╕реНрдХрд░рдг 4.11.0 рдФрд░ MongoDB рд╕рдВрд╕реНрдХрд░рдг 3.4.5 . рдХреЗ рд╕рд╛рде рдорд┐рд▓рддреА рд╣реИ

+1

+1

рдЙрдкрдпреЛрдЧ

mongoose.createConnection(URI)

@nandofalcao рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп:

  • mongoose.createConnection (URI);
  • mongoose.connect (URI, {useMongoClient: true});

рдЬрд╛рд╣рд┐рд░рд╛ рддреМрд░ рдкрд░ рдореИрдВ рдирдП рд░рд┐рдХреЙрд░реНрдб рдирд╣реАрдВ рдмрдЪрд╛ рд╕рдХрддрд╛ред

let userSchema = mongoose.Schema({ name: String });
let User = mongoose.model('User', userSchema);
let joao = new User({ name: 'NewJoao ' });
joao.save((err) => err ? throw err : console.log('User created!'));//nothing happens

рдЖрдЬ рд░рд╛рдд рдкреЙрд▓реАрдЧреНрд▓реЙрдЯ рдЬреЛрдбрд╝рдирд╛ рдФрд░ +1 рдЗрд╕рдХрд╛ рдЕрдиреБрднрд╡ рдХрд░рдирд╛ред

// Load Mongoose
const mongoose = require('mongoose');
// import mongoose from 'mongoose' didn't give access to .connect()

// Use native Promises
mongoose.Promise = global.Promise;

// Connect database
export const Mongoose = new Promise((resolve, reject) => {
  const uri = `mongodb://${Singleton.currentConfig.databases.mongodb.host}/${Singleton.currentConfig.databases.mongodb.database}`;

  const options = {
    user: Singleton.currentConfig.databases.mongodb.user,
    pass: Singleton.currentConfig.databases.mongodb.password,
    server: {
      reconnectTries: Singleton.currentConfig.databases.mongodb.reconnectTries,
      reconnectInterval: Singleton.currentConfig.databases.mongodb.reconnectInterval,
      socketOptions: {
        keepAlive: Singleton.currentConfig.databases.mongodb.keepAlive,
        connectTimeoutMS: Singleton.currentConfig.databases.mongodb.connectTimeoutMS
      },
    },
  };

  // Initiate document store
  mongoose.connect(uri, options)

  // Check for anomalies
  .then((connected) => {
    if (mongoose.connection.readyState !== 1) {
      reject(connected);
    }
    resolve(connected);
  })

  // Complete meltdown
  .catch((error) => {
    console.log(`MongoDB Connection Error: ${error}`);
    process.exit(0);
  });
});

+1

рдФрд░ рдореБрдЭреЗ рджреВрд╕рд░рд╛ рд╕рдВрджреЗрд╢ рдорд┐рд▓рддрд╛ рд╣реИ:

[2017-06-27 16:14:23.702] [рд╕реВрдЪрдирд╛] :: - рд╕рд░реНрд╡рд░ 2000 рдкреЛрд░реНрдЯ рдореЗрдВ рд╢реБрд░реВ рд╣реБрдЖ

(рдиреЛрдб:1193) рдкрджрд╛рд╡рдирддрд┐ рдЪреЗрддрд╛рд╡рдиреА: open() рдиреЗрд╡рд▓рд╛ рдореЗрдВ рдкрджрд╛рд╡рдирдд рд╣реИ >= 4.11.0, рдЗрд╕рдХреЗ рдмрдЬрд╛рдп openUri() рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдпрд╛ connect() рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдкрд░ useMongoClient рд╡рд┐рдХрд▓реНрдк рд╕реЗрдЯ рдХрд░реЗрдВ рдпрд╛ createConnection()

Db.prototype.authenticate рд╡рд┐рдзрд┐ рдЕрдм рдЕрдЧрд▓реА рдкреНрд░рдореБрдЦ рд░рд┐рд▓реАрдЬрд╝ 3.x рдореЗрдВ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реЛрдЧреА рдХреНрдпреЛрдВрдХрд┐ MongoDB 3.6 рдХреЗрд╡рд▓ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ db рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд╡рд┐рд░реБрджреНрдз рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ рдФрд░ рдЕрдм рд╕реЙрдХреЗрдЯ рдкрд░ рдПрдХрд╛рдзрд┐рдХ рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрдЧрд╛ред рдХреГрдкрдпрд╛ рдкреНрд░рд╛рдорд╛рдгрд┐рдХ рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓ рдХреЗ рд╕рд╛рде MongoClient.connect рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рдорд╛рдгрд┐рдд рдХрд░реЗрдВред

+1

+1

+1

+1

+1

рдХреНрдпрд╛ рдХреЛрдИ рдЗрд╕реЗ рдмреЗрдХрд╛рд░ +1 рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рд▓реЙрдХ рдХрд░ рд╕рдХрддрд╛ рд╣реИ?

рдЗрд╕ рдереНрд░реЗрдб рдХреЗ рд╕рджрд╕реНрдпреЛрдВ рдХреЗ рд╕реМрдЬрдиреНрдп рд╕реЗ, рдХреГрдкрдпрд╛ +1 рдХреЗ рд╕рд╛рде рдЙрддреНрддрд░ рджреЗрдирд╛ рдмрдВрдж рдХрд░реЗрдВ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдмреЗрдХрд╛рд░ рдИрдореЗрд▓ рд╕реВрдЪрдирд╛рдПрдВ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдПрдХ рдордВрдЪ рдирд╣реАрдВ рд╣реИред рдпрджрд┐ рдЖрдк рдЗрд╕ рдзрд╛рдЧреЗ рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рджрд╛рд╣рд┐рдиреЗ рд╕рд╛рдЗрдбрдмрд╛рд░ рдкрд░ рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрдВ рдмрдЯрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдЖрдк рд╕реНрд╡рдпрдВ рднреА рдХреБрдЫ рд╢реЛрдз рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╕рдорд╛рдзрд╛рди рдореЗрдВ рдпреЛрдЧрджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдореИрдВрдиреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рд╡рд╛рдкрд╕ 4.10.8 рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ рдФрд░ рдЕрдм рдпрд╣ рдареАрдХ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИред

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ ValYouW рдХреЗ рдкрд╛рд╕ рдпрд╣рд╛рдВ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рд▓реЛрдб рдХрд░рдиреЗ рдХреА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдВрднрд╛рд╡рд┐рдд рд╕рдорд╛рдзрд╛рди рд╣реИ: #5404

mongoose.connection.openUri('mongodb://127.0.0.1/camp_v12')

рдХреНрдпрд╛ рдХрд┐рд╕реА рдиреЗ рдпрд╣ рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ? рдЬрдм рдореИрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ рддреЛ рдореЗрд░реА рдмрд╣рд┐рд╖реНрдХреГрдд рдЪреЗрддрд╛рд╡рдиреА рдЧрд╛рдпрдм рд╣реЛ рдЬрд╛рддреА рд╣реИ, рдпрд╣ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рд╕реЗ рдереА

http://mongoosejs.com/docs/connections.html

@crisamdegracia рдЬреЛ рдорд╛рдирддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдХрдиреЗрдХреНрд╢рди рд╣реИ

// Or, if you already have a connection
connection.openUri('mongodb://localhost/myapp', { /* options */ });

рдЬреЛ рд╣рдо рдирд╣реАрдВ рдХрд░рддреЗ (рдХрдо рд╕реЗ рдХрдо рдореБрдЭреЗ рдЬрдм рд╕реЗ рдореИрдВ mongoose.connect рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ mongodb рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рддрд╛ рдерд╛)

mongoose.connect(config.get('mongo'), {
  useMongoClient: true,
});

рдореБрдЭреЗ рдХреЛрдИ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдирд╣реАрдВ рдорд┐рд▓рд╛... рдХреНрдпрд╛ рдЧрд╝рд▓рдд рд╣реИ?

+1

рддреЛ @phased90 рд╕реЗ рдЬреБрдбрд╝реЗ рдореБрджреНрджреЗ рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рдмрд╛рдж рдЬреЛ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдЗрд╕ рддрд░рд╣ рд╕реЗ рдЬреБрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ:

const mongoose = require('mongoose');

mongoose.Promise = global.Promise;
mongoose.connect('mongodb://localhost/test', {useMongoClient: true})
    .then(() => {
        let Cat = mongoose.model('Cat', {name: String});
        let kitty = new Cat({name: 'Zildjian'});

        kitty.save(err => {
            if (err) {
                console.log(err);
            } else {
                console.log('meow');
            }
        });
    })
    .catch(err => console.error(err));

рдореИрдВрдиреЗ рдХреЛрдб рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рддреНрд╡рд░рд┐рдд рдЧреЛрддрд╛ рд▓рдЧрд╛рдпрд╛ рдФрд░ рдРрд╕рд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рдХрд┐ 4.11 MongooseThenable рджреЗрддрд╛ рд╣реИ рд╕рд┐рд╡рд╛рдп рдЗрд╕рдХреЗ рдХрд┐ рдЬрдм {useMongoClient: true} рд╡рд┐рдХрд▓реНрдк рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдпрд╣ Connection.prototype.openUri рдкрд░ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ рдЬреЛ Promise.ES6 рдХрд╛ рдПрдХ рдирдпрд╛ рдЙрджрд╛рд╣рд░рдг рджреЗрддрд╛ рд╣реИред рдХреНрдпрд╛ рдЙрд╕ Connection.prototype.openUri рдХреЙрд▓ рдХреЛ MongooseThenable рдореЗрдВ рд▓рдкреЗрдЯрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП?

рдкреНрд░рд╢реНрди рдХреЗ рд▓рд┐рдП рдореЗрд░реА рдХреНрд╖рдорд╛рдпрд╛рдЪрдирд╛, рдпрд╣ рдореЗрд░рд╛ рдкрд╣рд▓реА рдмрд╛рд░ рдЗрд╕ рдХреЛрдбрдмреЗрд╕ рдХреЛ рджреЗрдЦ рд░рд╣рд╛ рд╣реИ рдЗрд╕рд▓рд┐рдП рдореИрдВ рдереЛрдбрд╝рд╛ рдЕрдирд┐рд╢реНрдЪрд┐рдд рд╣реВрдВред рд▓реЗрдХрд┐рди рдЕрдЧрд░ Moongoose.prototype.connect рдХреЛ рд╣рдореЗрд╢рд╛ MongooseThenable рдХрд╛ рдЙрджрд╛рд╣рд░рдг рд▓реМрдЯрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рддреЛ рдореБрдЭреЗ рдХреБрдЫ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдорд┐рд▓ рд╕рдХрддрд╛ рд╣реИ, рддреЛ рдореБрдЭреЗ рдПрдХ рдлрд┐рдХреНрд╕ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреАред

рдзреНрдпрд╛рди рд░рдЦреЗрдВ рдХрд┐ {useMongoClient: true} рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ $ Connection.prototype.openUri рдХреЛ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЬреЛ рдмрдлрд╝рд░реНрдб рдХрдорд╛рдВрдб рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдЬреЛ __before__ #5404 рдХреЗ рдХрд╛рд░рдг DB рд╕реЗ рдХрдиреЗрдХреНрдЯ рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдмрдирд╛рдП рдЧрдП рдереЗред

+1

рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдЪреАрдЬреЗрдВ рдкрд╛рдЧрд▓ рд╣реЛ рдЧрдИ рд╣реИрдВ, рдереЛрдбрд╝реА рджреЗрд░ рдореЗрдВ рджреЗрдЦ рд▓реЗрдВрдЧреЗред

@varunjayaraman рдХреЛ рд╕реЙрд░реА рдлреНрд░реЗрдВрдб рд╣реЛрдиреЗ рдХреА рдЬрд░реВрд░рдд рдирд╣реАрдВ рд╣реИред рд▓реЛрдЧ рдпрд╛ рддреЛ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╛ рдЗрд╕реЗ рд╕реНрд╡рдпрдВ рдареАрдХ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

+1

рддреЛ рдЦреЛрд▓реЗ рдЧрдП рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдореБрджреНрджреЗ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ, рдмрд╣рд┐рд╖реНрдХрд░рдг рдЪреЗрддрд╛рд╡рдиреА рдПрдХ рдмрдЧ рдирд╣реАрдВ рд╣реИ, рдпрд╣ рд╕рд┐рд░реНрдл рдПрдХ рдЪреЗрддрд╛рд╡рдиреА рд╣реИ: рдиреЗрд╡рд▓рд╛ рдЕрдкрдиреЗ рд╡рд░реНрддрдорд╛рди рдХрдиреЗрдХреНрд╢рди рддрд░реНрдХ рдХреЛ рдмрд╣рд┐рд╖реНрдХреГрдд рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ useMongoClient рдкрд░рдо рдореЗрдВ рдкрд╛рд╕ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ

рдПрдХ рдЕрд▓рдЧ рдиреЛрдЯ рдкрд░, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдкреАрдЫреЗ рдХреА рдУрд░ рддреЛрдбрд╝рдиреЗ рд╡рд╛рд▓рд╛ рдкрд░рд┐рд╡рд░реНрддрди рдерд╛, рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЗрд╕реЗ рдЕрдЧрд▓реА рдЫреЛрдЯреА рд░рд┐рд▓реАрдЬ рдореЗрдВ рддрдп рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдпрд╛ рд╢рд╛рдпрдж рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ, рдореИрдВ рдпрд╣рд╛рдВ рдмрд╣реБрдд рдХрдо рдиреАрдВрдж рдкрд░ рдЪрд▓ рд░рд╣рд╛ рд╣реВрдВ):

рдпрд╣ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░реЗрдЧрд╛ ( useMongoClient рднрд╛рдЧ рдХреЗ рд▓рд┐рдП рд╕рд╣реЗрдЬреЗрдВ, рдЬреЛ рдирдпрд╛ рд╣реИ):

const mongoose = require('mongoose');
const co = require('co');
mongoose.Promise = global.Promise;
const GITHUB_ISSUE = `gh-5399`


exec()
  .then(() => {
    console.log('successfully ran program');
    process.exit(0);
  })
  .catch(error => {
    console.error(`Error: ${ error }\n${ error.stack }`);
  });


function exec() {
  return co(function*() {
    const db = mongoose.createConnection(`mongodb://localhost:27017/${ GITHUB_ISSUE }`, { useMongoClient: true })
    const schema = new mongoose.Schema({
      name: String
    });


    const Model = db.model('Model', schema);
  });
}

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдПрдХ рддреНрд░реБрдЯрд┐ рдлреЗрдВрдХ рд░рд╣рд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ db.model рдЕрдм рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдирд╣реАрдВ рд╣реИред

mongoose.model рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:

const mongoose = require('mongoose');
const co = require('co');
mongoose.Promise = global.Promise;
const GITHUB_ISSUE = `gh-5399`


exec()
  .then(() => {
    console.log('successfully ran program');
    process.exit(0);
  })
  .catch(error => {
    console.error(`Error: ${error}\n${error.stack}`);
  });


function exec() {
  return co(function* () {
    const db = mongoose.connect(`mongodb://localhost:27017/${GITHUB_ISSUE}`, { useMongoClient: true })

    return db
      .then(() => {
        const schema = new mongoose.Schema({
          name: String
        });


        const Model = mongoose.model('Model', schema);

        return Model.create({ name: 'test' });
      })
      .then(doc => console.log(doc));

  });
}

@varunjayaraman рдореИрдВрдиреЗ рдЕрднреА Mongoose рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рдЖрдкрдХреЗ рд╕реБрдЭрд╛рд╡ рдХреЗ рдЕрдиреБрд╕рд╛рд░ useMongoClient: true рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИред
рдпрд╣ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ Mongoose рдкреНрд░рд▓реЗрдЦрди рдХреЗ рдЕрдиреБрд╕рд╛рд░, user , рдФрд░ pass рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ:

the options [user] is not supported
the options [pass] is not supported

рдФрд░, рд╣рд╛рдБ, рдкреНрд░рдорд╛рдгрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓ рд░рд╣рд╛ред :-1:

рдореИрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдФрд░ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдХрдиреЗрдХреНрд╢рди рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдкрд╛рд╕ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реВрдВрдЧрд╛ред
рдпрд╣ рддрдм рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЬрдм рдореИрдВ рдХрдиреЗрдХреНрд╢рди рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо рдФрд░ рдкрд╛рд╕рд╡рд░реНрдб рдЬреЛрдбрд╝рддрд╛ рд╣реВрдВред рд╢рд╛рдпрдж рдЖрдкрдХреЛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдореИрдВ

@itpcc 4.10.8 рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдЗрд╕ рд╕рдордп рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рд╣реИред

npm remove mongoose
npm install [email protected] --save

рд╕рд╛рднрд╛рд░: @ рдЪреЗрдиреНрдЬрд╝62

@CQBinh рдЖрдкрдХреА рд╕рд▓рд╛рд╣ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдореИрдВ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЙрди рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЛ рдкрд╣рд▓реЗ рд╣реА рдкрдврд╝ рдЪреБрдХрд╛ рд╣реВрдВред
рд╣рд╛рд▓рд╛рдБрдХрд┐, рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЕрднреА рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рд╣реИред рдФрд░ рдпрд╣ рдХрдиреЗрдХреНрд╢рди рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдбрд╛рд▓рдиреЗ рд╕реЗ рд╣рд▓ рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рдореИрдВ рд╕рд┐рд░реНрдл рднреНрд░рдорд┐рдд рдорд╣рд╕реВрд╕ рдХрд░рддрд╛ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рдЗрд╕рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рд▓реЗрдХрд┐рди рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред :/
рдмреАрдЯреАрдбрдмреНрд▓реНрдпреВ, рдореИрдВ рдпрд╣рд╛рдВ рдПрдХ рдирдП рдореБрджреНрджреЗ рдХреЗ рд░реВрдк рдореЗрдВ рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рддрд╛ рд╣реВрдВ

@varunjayaraman рдЕрдЧрд░ db.model рдЕрдм рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ, рддреЛ рдХреЛрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдореЙрдбрд▓реЛрдВ рдХреЗ рд╕рд╛рде рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдиреЗрд╡рд▓рд╛ рдХрдиреЗрдХреНрд╢рди рдХреИрд╕реЗ рд╕рдВрднрд╛рд▓реЗрдЧрд╛?

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдореЙрдбрд▓1 рдФрд░ рдореЙрдбрд▓2 рдиреЗрд╡рд▓рд╛рдХрдиреЗрдХреНрд╢рди1 рд╕реЗ рдЬреБрдбрд╝реЗ рдФрд░ рдореЙрдбрд▓3 рдФрд░ рдореЙрдбрд▓4 рдиреЗрд╡рд▓рд╛рдХрдиреЗрдХреНрд╢рди2 рд╕реЗ рдЬреБрдбрд╝реЗред

рдкрд╣рд▓реЗ рдпрд╣ рдкреНрд░рддреНрдпреЗрдХ рдХрдиреЗрдХреНрд╢рди рдХреЗ рд▓рд┐рдП mongoose.createConnection рдкрд░ рдХреЙрд▓ рдХрд░рдХреЗ рдФрд░ рдЗрди рд░рд┐рдЯрд░реНрди рдорд╛рдиреЛрдВ рдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЗ рд▓рд┐рдП рдореЙрдбрд▓ рд╕рдВрд▓рдЧреНрди рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рдерд╛ред

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдпрд╛ рдпрд╣ рдЕрднреА рднреА рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ:

const conn = mongoose.createConnection(...);
const Model = conn.model('ModelName', schema);

+1

@ Boyce-ywr рдЧрдВрднреАрд░рддрд╛ рд╕реЗ, рдПрдХ рдФрд░ +1 ??? рдЖрдк рд▓реЛрдЧреЛрдВ рдХрд╛ рдХреНрдпрд╛ рдХрд╕реВрд░ рд╣реИ??
рд░рдЪрдирд╛рддреНрдордХ рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдВ рдкреЛрд╕реНрдЯ рдХрд░реЗрдВ, рдЗрд╕ рддрд░рд╣ рдХреА рдЪреАрдЬреЗрдВ рдирд╣реАрдВред

рдиреЗрд╡рд▓реЗ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ, рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рднрд╡рд┐рд╖реНрдп рдХреЗ рд░рд┐рд▓реАрдЬ рдореЗрдВ mongoose.connect() рдкрджреНрдзрддрд┐ рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдпрд╛ рдирд╣реАрдВред рдХреГрдкрдпрд╛ рдХреЛрдИ рд╕рдордЭрд╛ рд╕рдХрддрд╛ рд╣реИ?

@simonemazzoni рдЖрдк рд╕рд╣реА рдХрд╣ рд░рд╣реЗ рд╣реИрдВ, рд╡реЗ рд╣рдореЗрдВ рд╕реНрдкреИрдо рдХрд░ рд░рд╣реЗ рд╣реИрдВред

рдпрджрд┐ рдЖрдк рдЗрд╕ рдереНрд░реЗрдб рдХреЗ рд▓рд┐рдП рд╕реВрдЪрдирд╛рдУрдВ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рдЗрд╕рдХреА рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ (рдереНрд░реЗрдб рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдПрдХ рдмрдЯрди рд╣реИ),

рдЬрдм рдЖрдк +1 рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдЖрдк рдХреЗрд╡рд▓ рдпрд╣ рдХрд╣рддреЗ рд╣реБрдП рд╕рднреА рдХреЛ рдпрд╣рд╛рдВ рдПрдХ рдИрдореЗрд▓ рднреЗрдЬрддреЗ рд╣реИрдВ

рд╣реИрд▓реЛ рдореИрдВ рдпрд╣рд╛рдВ рд╣реВрдВ!

рд╣рдореЗрдВ рдкрд░рд╡рд╛рд╣ рдирд╣реАрдВ рд╣реИ , рд╣рдо рд░рдЪрдирд╛рддреНрдордХ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдФрд░ рд╕рдорд╛рдзрд╛рди рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдк рд╕рднреА +1 рдЗрд╕ рд╕реВрдЪреА рд╕реЗ рдЕрдкрдиреА рдкреЛрд╕реНрдЯ рдХреЛ рд╣рдЯрд╛ рдХреНрдпреЛрдВ рдирд╣реАрдВ рджреЗрддреЗ рд╣реИрдВ, рд╡реЗ рдПрдХ рдЖрдВрдЦреЛрдВ рдХреЗ рджрд░реНрдж рдФрд░ рдкреАрдЫреЗ рдХреЗ рджрд░реНрдж рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдЕрддреАрдд рдХреЛ рд╕реНрдХреНрд░реЙрд▓ рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИред

рдЬреИрд╕рд╛ рдХрд┐ рдХреБрдЫ рд▓реЛрдЧреЛрдВ рдиреЗ рдкрд╣рд▓реЗ рдХрд╣рд╛, рдПрдХрдорд╛рддреНрд░ "рд╕рдорд╛рдзрд╛рди" [email protected]_ рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛рдирд╛ рд╣реИ ...
рдХрдо рд╕реЗ рдХрдо рдЕрднреА рдХреЗ рд▓рд┐рдП!

рдПрдХ рдмрдЧ рдХреА рддрд░рд╣ рд▓рдЧ рд░рд╣рд╛ рд╣реИ, рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП [email protected] рдкрд░ рд╡рд╛рдкрд╕ рдЪрд▓рд╛ рдЧрдпрд╛

mongoose.connect(...) рдХреЗ рдмрдЬрд╛рдп mongoose.createConnection(...) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

рдпрд╣рд╛рдБ @diegoazh рдХреА рдЕрдиреБрд╢рдВрд╕рд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ [email protected] рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдкреВрд░реНрдг рдХрд╛рд░реНрдп рдЙрджрд╛рд╣рд░рдг рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ

const mongoose = require('mongoose')
mongoose.Promise = require('bluebird')  // optional, use this to get rid of 
                                        // the mpromise DeprecationWarning
const conn = mongoose.createConnection('mongodb://localhost/testDB')
const Schema = mongoose.Schema

const UserSchema = new Schema({
    username: String,
    email: String
})

const User = conn.model('User', UserSchema)
module.exports = User

@midnightcodr рддреЛ рд╣рдо рд╕рд┐рд░реНрдл рдХрдиреЗрдХреНрдЯ рдбреНрд░реЙрдк рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп createConnection рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ?

@ bertolo1988 рдЬреИрд╕реЗ рдкреАрдкреАрдПрд▓ рдиреЗ рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ рдерд╛, рд╡рд░реНрддрдорд╛рди рдореЗрдВ рджреЛ рд╕рдорд╛рдзрд╛рди рд╣реИрдВ

  1. 4.10.8 . рдкрд░ рд╡рд╛рдкрд╕ рдЖрдПрдВ
  2. рдпрджрд┐ рдЖрдк рдирдП рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рд░рд╣рдирд╛ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдирдП рдкреИрдЯрд░реНрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ
const conn = mongoose.createConnection(...)
const Model = conn.model(...)

рдореИрдВ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рджреВрд╕рд░рд╛ рд╕рдорд╛рдзрд╛рди рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВред

рдзрдиреНрдпрд╡рд╛рдж!!!
createConnection рджреНрд╡рд╛рд░рд╛ рд╣рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдореЙрдбрд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрд╕ рдХрдиреЗрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ (рдореЛрдВрдЧреЛрдЬрд╝ рдХреЗ рдмрдЬрд╛рдп)

let mongoose = require('mongoose');

mongoose.Promise = global.Promise;

module.exports = mongoose;
const mongoose = require('./set-mongoose');
module.exports = mongoose.createConnection('mongodb://localhost/advisorDemoTestDB');

рдирдП рдХрдиреЗрдХреНрд╢рди рдкреИрдЯрд░реНрди рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдХреЛрдб рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдФрд░ рдЖрдкрдХреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рдЖрдХрд╛рд░ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рдмрд╣реБрдд рд╕рдордп рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рд╢рд╛рдпрдж рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдореЗрдВ рднреА рдмрджрд▓рд╛рд╡ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ (рдЗрд╕ рддрдереНрдп рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рдореЙрдбрд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдиреЗрдХреНрд╢рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ)ред

рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрддрд╛ рдЕрдЧрд░ рдкреБрд░рд╛рдирд╛ рдХрдиреЗрдХреНрд╢рди рдореЙрдбрд▓ рдирдП рдХрдиреЗрдХреНрд╢рди рдореЙрдбрд▓ рдХреЛ рд▓рдкреЗрдЯ рд╕рдХрддрд╛ред

рдмрд╣реБрдд рд╕рд╛рд░реА рдкреЛрд╕реНрдЯ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдХреНрдпрд╛ рдореИрдВ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдмрддрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ:

  1. рдЪреЗрддрд╛рд╡рдиреА рдПрдХ рдкрджрд╛рд╡рдирдд рдЪреЗрддрд╛рд╡рдиреА рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ, рдХреЛрдИ рдЬрд▓реНрджреА рдирд╣реАрдВ рд╣реИред рдЕрдЧрд░ рд╣рдо рдХреБрдЫ рднреА рдирд╣реАрдВ рдмрджрд▓рддреЗ рд╣реИрдВ рддреЛ рдпрд╣ рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣ рдХрд╛рдо рдХрд░реЗрдЧрд╛, рд╕рдм рдХреБрдЫ рдареАрдХ рд▓рдЧрддрд╛ рд╣реИ

  2. рдЪреЗрддрд╛рд╡рдиреА рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдХрдиреЗрдХреНрдЯ() рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ/рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдореЛрдВрдЧреЛ рдХреНрд▓рд╛рдЗрдВрдЯ рдПрдХ рдЬрд░реВрд░реА рд╣реЛрдЧрд╛ред рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рд╕рдВрднрд╛рд╡рд┐рдд рдмрдЧ/рд╕рдорд╕реНрдпрд╛ рд╣реИ

  • рдХрдиреЗрдХреНрдЯ ('myurl', {useMongoClient: true}) => рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рд▓реЛрдб рдХрд░рдирд╛ рдмрдВрдж рдХрд░ рджреЗрддрд╛ рд╣реИ рдФрд░ рдбреАрдмреА рдореЗрдВ рд▓рд┐рдЦрдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИ

  • рдХрдиреЗрдХреНрдЯ ('myurl', {useMongoClient: false}) => рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдЪреЗрддрд╛рд╡рдиреА рдЕрднреА рднреА рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддреА рд╣реИ

рдЗрд╕рд▓рд┐рдП рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рд╡рд┐рдзрд┐ рдХрдиреЗрдХреНрдЯ рдХреА рдХреЙрд▓ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ useMongoClient рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рд╕рд╣реА рдХрд░рдирд╛ рд╣реИред

рдЗрд╕ рдмрд╛рдд рд╕реЗ рд╕рд╣рдордд?

рдлрд┐рд░ рднреА, рдЬрдмрдХрд┐ рдПрдХ рдмрд╣рд┐рд╖реНрдХрд░рдг рдЪреЗрддрд╛рд╡рдиреА рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ "рд╕рд┐рд░реНрдл" рдЪреЗрддрд╛рд╡рдиреА рд╣реИ, рдЙрд╕ рд╢реЛ рдХреЗ рд╣реЛрдиреЗ рд╕реЗ рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрдм рд╣рдЯрд╛рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рдЕрдЧрд░ рдиреЗрд╡рд▓рд╛ рд╕реАрд╡рд░ рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░ рд░рд╣рд╛ рд╣реИ, рддреЛ рдпрд╣ рдЕрднреА рднреА 4.x рд╢рд╛рдЦрд╛ рдореЗрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕рд▓рд┐рдП, рдЗрд╕реЗ рддрдм рднреА рдкрд╢реНрдЪрдЧрд╛рдореА рд╕рдВрдЧрддрддрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрдм рддрдХ рдХрд┐ 5.x рдЬрд╛рд░реА рди рд╣реЛ рдЬрд╛рдПред

рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ, рдпрд╣ рдПрдХ рддрд░рд╣ рд╕реЗ рдХрд╖реНрдЯрдкреНрд░рдж рд╣реИ рдХрд┐ рдореБрдЭреЗ рдЗрд╕ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рднреА рдЬрд▓реНрджреА рд╕реЗ рдирд╣реАрдВ рдорд┐рд▓рд╛, рд╕рд┐рд╡рд╛рдп рдЗрд╕рдХреЗ рдХрд┐ рдЪреИрдВрдЬ рдореЗрдВ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЬрдм рдЖрдк рдЗрд╕реЗ рдмрджрд▓рддреЗ рд╣реИрдВ, рддрдм рднреА рд╕рд╛рдорд╛рди рдЯреВрдЯ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдпрд╣рд╛рдВ рдХрдИ рд▓реЛрдЧреЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдпрд╣ .model() рдХреЙрд▓ рдХреЗ рдХрд╛рд░рдг рд╣реИред

рд╕рд╛рде рд╣реА, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдЕрднреА рднреА mongoose.connect() рдФрд░ mongoose.model() рджрд┐рдЦрд╛рддреЗ рд╣реИрдВ, рдЬреЛ рдЗрд╕ рдорд╛рдорд▓реЗ рдХреЛ рдФрд░ рднреА рднреНрд░рдорд┐рдд рдХрд░рддрд╛ рд╣реИред mongoose.connect() рдкрд░рд┐рд╡рд░реНрддрди рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХреЗрд╡рд▓ рдХрдиреЗрдХреНрд╢рди рдкреВрд▓ рдХреЗ рдЕрдВрддрд░реНрдЧрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рди рдХрд┐ рдЗрд╕ рдкреГрд╖реНрда рдХреЗ рдЕрдиреНрдп рднрд╛рдЧреЛрдВ рдкрд░ред рддреЛ рд╕рд╡рд╛рд▓ рдпрд╣ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдмрджрд▓рд╛рд╡ рдПрдХ рдмрдЧ рд╣реИ, рдпрд╛ рдЗрд░рд╛рджрд╛ рд╣реИ?

рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдпрд╣ рдХрд╣рд╛рдВ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдЗрд╕ рд╕рдкреНрддрд╛рд╣рд╛рдВрдд рдХреЗ рдмреЗрд╣рддрд░ рд╣рд┐рд╕реНрд╕реЗ рдХреЛ рдореЛрдВрдЧреЛрдбреАрдмреА рдХреЗ рдПрдЯрд▓рд╕ рдореЗрдВ рдХрдиреЗрдХреНрд╢рди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдореЗрдВ рдмрд┐рддрд╛рдпрд╛ рд╣реИред рджреЗрд╢реА рдореЛрдВрдЧреЛрдбрдм рдЪрд╛рд▓рдХ рддреБрд░рдВрдд рд╕реАрдЖрд░рдпреВрдбреА рд╕рд╛рдорд╛рди рдЪрд▓рд╛ рд░рд╣рд╛ рдерд╛ред

рд╣рд╛рд▓рд╛рдБрдХрд┐ рдиреЗрд╡рд▓реЗ рдХреЛ рдкрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдирд╛ рдХреБрд▓ рджреБрдГрд╕реНрд╡рдкреНрди рд╣реИред рдЕрдЧрд░ рдореИрдВ 4.11 рдХреЗ рд╕рд╛рде createConnection рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ рддреЛ рдХреНрд▓рд╕реНрдЯрд░ рдХрдиреЗрдХреНрд╢рди рдорд╛рд░реЗ рдЬрд╛рддреЗ рд╣реИрдВ:

MongoError: connection 4 to cluster0-myshard.mongodb.net:27017 closed

рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ, рдореИрдВ рд╕реЗрдЯ рдХрд░ рд╕рдХрддрд╛ рдерд╛

useMongoClient: true

рд▓реЗрдХрд┐рди рдлрд┐рд░ рдореИрдВ рдХрдиреЗрдХреНрд╢рди рдкрд░ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реВрдВред рдореЙрдбрд▓

<info> atlas-api-test.js:65 (Test.testVendors) conn.model undefined

@Archomeda 4.x рдореЗрдВ рд╡рд┐рд░рд╛рд╕рдд рдХрдиреЗрдХреНрд╢рди рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреА рдХреЛрдИ рдпреЛрдЬрдирд╛ рдирд╣реАрдВ рд╣реИ, рдФрд░ 5.x рд╕реНрдерд┐рд░ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдирдпрд╛ рдХрдиреЗрдХреНрд╢рди рддрд░реНрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдкрд░ рдЕрд╡рд░реБрджреНрдз рд╣реИред рдХрдиреЗрдХреНрд╢рди рдбреЙрдХреНрд╕ рдкрд░ рдРрд╕реЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рд╣реИрдВ рдЬреЛ 4.11.1 рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░реЗрдВрдЧреЗ рдФрд░ рдЙрд╕рд╕реЗ рд▓рд┐рдВрдХ рд╕рд╣рд╛рдпрдХ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдкреБрди: model() рдХреЙрд▓, рдпрджрд┐ рдЖрдк useMongoClient: true рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ createConnection() рдПрдХ рдХрдиреЗрдХреНрд╢рди рдирд╣реАрдВ рд▓реМрдЯрд╛рдПрдЧрд╛, рдмрд▓реНрдХрд┐ рдПрдХ рд╡рд╛рджрд╛ рдЬреЛ рдЙрд╕ рдХрдиреЗрдХреНрд╢рди рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдХреА рдЖрдкрдХреЛ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ .then() рдЪрд╛рд▓реВред рддрд░реНрдХ рдХрд╛ рд╡рд░реНрдгрди рдпрд╣рд╛рдБ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ: https://github.com/Automattic/mongoose/issues/5404#issuecomment -312522539 рдХреГрдкрдпрд╛ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдХрд┐рд╕реА рднреА рдЪрд┐рдВрддрд╛ рдХреЛ #5404 рдЕрдВрдХ рдкрд░ рд╡реНрдпрдХреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рддрдВрддреНрд░ рдорд╣рд╕реВрд╕ рдХрд░реЗрдВред

@mkastner рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк createConnection() рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВред useMongoClient: true рдХреЗ рд╕рд╛рде, createConnection() рдПрдХ рд╡рд╛рджрд╛ рджреЗрддрд╛ рд╣реИ рдЬреЛ рдПрдХ рдХрдиреЗрдХреНрд╢рди рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИред рдХреГрдкрдпрд╛ await mongoose.createConnection() рдпрд╛ mongoose.createConnection().then() рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ

@peterpeterparker #5404 рдиреЗ рдирдП рдХрдиреЗрдХреНрд╢рди рддрд░реНрдХ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдорд╕реНрдпрд╛ рдХреА рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд┐рд╕реЗ рдЕрдЧрд▓реЗ 24 рдШрдВрдЯреЛрдВ рдХреЗ рднреАрддрд░ рдЬрд╛рд░реА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП 4.11.1 рдореЗрдВ рддрдп рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

@ cosminn777 рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреМрди рд╕реЗ рд╡рд╛рд╕реНрддреБрд╢рд┐рд▓реНрдк рдореБрджреНрджреЗ рд╣реИрдВ? рдХреГрдкрдпрд╛ рдЙрди рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рдореБрджреНрджрд╛ рдЦреЛрд▓реЗрдВред рд▓рдВрдмреА рдЕрд╡рдзрд┐ рдХреА рдпреЛрдЬрдирд╛ рдпрд╣ рд╣реИ рдХрд┐ 5.x рдореЗрдВ рд╣рдо рдиреЛрдб <4 рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ, рдЗрд╕рд▓рд┐рдП рдиреЗрд╡рд▓реЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рд▓реЛрдЧреЛрдВ рдХреЗ рдкрд╛рд╕ рдЬрдирд░реЗрдЯрд░ рдФрд░/рдпрд╛ async/рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореВрд▓ рдкрд╣реБрдВрдЪ рд╣реЛрдЧреА, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдкрд░рд┐рд╡рд░реНрддрди yield рдЬреЛрдбрд╝рдиреЗ рдЬрд┐рддрдирд╛ рдЖрд╕рд╛рди рд╣реЛрдЧрд╛ред await рд╕реНрдЯреЗрдЯрдореЗрдВрдЯред

@alanpurple рдЬрд┐рд╕ рдореБрджреНрджреЗ рдХрд╛ рдЖрдк рдЬрд┐рдХреНрд░ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рд╡рд╣ рд╡рд╣реА рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ # 5404 рд╣реИ рдФрд░ рдЗрд╕реЗ 4.11.1 рдХреЗ рд╕рд╛рде рдареАрдХ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

@itpcc рдореИрдВрдиреЗ #5432 рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рдореБрджреНрджрд╛ рдЦреЛрд▓рд╛ред рдЕрднреА рдХреЗ рд▓рд┐рдП, рдХреГрдкрдпрд╛ рдЕрдкрдирд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо/рдкрд╛рд╕рд╡рд░реНрдб URI рдореЗрдВ рдбрд╛рд▓реЗрдВ: var dbURL = mongodb://${dbUser}:${dbPass}@${dbHost}:${dbPort}/${dbName}?authSource= рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ `.

рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдЗрд╕ рдирдП рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдЖрдЬрд╝рдорд╛рдиреЗ рдореЗрдВ рдЖрдкрдХреЗ рдзреИрд░реНрдп рдХреЗ рд▓рд┐рдП рд╕рднреА рдХрд╛ рдзрдиреНрдпрд╡рд╛рджред рдореБрдЭреЗ рдПрд╣рд╕рд╛рд╕ рд╣реИ рдХрд┐ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рд╕реЗ рдХреБрдЫ рд╕рд┐рд░рджрд░реНрдж рд╣реЛрдЧрд╛, рдпрд╣реА рд╡рдЬрд╣ рд╣реИ рдХрд┐ рд╣рдордиреЗ рдЗрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдПрдХ рдЭрдВрдбреЗ рдХреЗ рдкреАрдЫреЗ рдЫрд┐рдкрд╛ рджрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдХреБрдЫ рдмрджрд▓рд╛рд╡ MongoDB 3.6 рдХреЗ рд▓рд┐рдП рдкрд╛рдЗрдк рдХреЗ рдиреАрдЪреЗ рдЖ рд░рд╣реЗ рд╣реИрдВ, рдиреЗрд╡рд▓реЗ рдХреЗ рдЖрдВрддрд░рд┐рдХ рдХрдиреЗрдХреНрд╢рди рддрд░реНрдХ рдХреЗ рдкреВрд░реНрдг рдУрд╡рд░рд╣рд╛рд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдирдпрд╛ рдХрдиреЗрдХреНрд╢рди рддрд░реНрдХ рд▓рдВрдмреЗ рд╕рдордп рдореЗрдВ рдХрдо рдиреЗрд╡рд▓рд╛-рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрдиреЗрдХреНрд╢рди рдмрдЧ рдХреЛ рдЬрдиреНрдо рджреЗрдЧрд╛, рд▓реЗрдХрд┐рди рдХреГрдкрдпрд╛ рд╣рдорд╛рд░реЗ рд╕рд╛рде рд░рд╣реЗрдВ рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рд╡реНрдпрд╡рд╣рд╛рд░ рдФрд░ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдХреЛ рджреВрд░ рдХрд░рддреЗ рд╣реИрдВред рдЖрдкрдХреА рдкреНрд░рддрд┐рдкреБрд╖реНрдЯрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдХреЗ рд▓рд┐рдП рд╣рдо рдмрд╣реБрдд рдЖрднрд╛рд░реА рд╣реИрдВред

рдЬрдм рддрдХ рдЖрдк 4.x рдкрд░ рд╣реИрдВ, рдЖрдкрдХрд╛ рд╡рд░реНрддрдорд╛рди рдХрдиреЗрдХреНрд╢рди рддрд░реНрдХ рдХрд╛рдо рдХрд░реЗрдЧрд╛, рдпрд╣ рдХреЗрд╡рд▓ рдПрдХ рдЪреЗрддрд╛рд╡рдиреА рдкреНрд░рд┐рдВрдЯ рдХрд░реЗрдЧрд╛ред рдЗрд╕ рдмреАрдЪ, рдХреГрдкрдпрд╛ рдмреЗрдЭрд┐рдЭрдХ рдПрдХ рдЕрд▓рдЧ рдЬреАрдердм рдореБрджреНрджреЗ рдореЗрдВ рдЖрдкрдХреЗ рдХрд┐рд╕реА рднреА рдореБрджреНрджреЗ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░реЗрдВред

рдмрд╕ рдирдпрд╛ рддрд░реАрдХрд╛ рдЕрдкрдирд╛рдпрд╛ рдФрд░ рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рд╕рднреА рдХреЛ рдзрдиреНрдпрд╡рд╛рдж!

@ vkarpov15 рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

рдПрдлрд╡рд╛рдИрдЖрдИ рдХреЗ рд░реВрдк рдореЗрдВ, рд╡рд╣реА рдмрд╣рд┐рд╖реНрдХрд░рдг рдЪреЗрддрд╛рд╡рдиреА openSet рдХреЗ рд╕рд╛рде рднреА рдлреЗрдВрдХ рджреА рдЬрд╛рддреА рд╣реИ (рдореИрдВ рдПрдХ рдкреНрд░рддрд┐рдХреГрддрд┐ рд╕реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ)ред

рддреЛ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдЗрд╕ рдЪреЗрддрд╛рд╡рдиреА рдХреЛ рдЕрднреА рдХреЗ рд▓рд┐рдП рдЕрдирджреЗрдЦрд╛ рдХрд░рдирд╛ рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдХреЗрд╡рд▓ рдиреЗрд╡рд▓рд╛ рдХреЗ рдЖрдВрддрд░рд┐рдХ рдХрд╛рдордХрд╛рдЬ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ, рдФрд░ рд╣рдо useMongoClient рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рд▓реЗрдХрд┐рди рдЕрднреА рддрдХ рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░рдирд╛ рд╣реИред

рдЖрдкрдХреЗ рд╣рд┐рд╕рд╛рдм рд╕реЗ рдпрд╣ рдХрд┐рддрдирд╛ рд╕реНрдерд┐рд░ рд╣реИ? рдХреНрдпрд╛ рдпрд╣ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИ? рдореИрдВ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдпрд╣ рдЕрднреА рднреА рдЙрддреНрдкрд╛рджрди рдореЗрдВ рдЕрдиреБрдкрдпреЛрдЧреА рд╣реИ, рдореИрдВ рдЕрдкрдиреЗ рд╕рднреА рдореЙрдбрд▓реЛрдВ рдФрд░ рдХрдиреЗрдХреНрд╢рди рддрд░реНрдХ рдХреЛ рджреЛрдмрд╛рд░рд╛ рдХрд░рдиреЗ рдореЗрдВ 2 рдШрдВрдЯреЗ рдЦрд░реНрдЪ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред

рдХреНрдпрд╛ рдРрд╕реЗ рд╕рдордп рддрдХ рдкрджрд╛рд╡рдирддрд┐ рдЪреЗрддрд╛рд╡рдиреА рдХреЛ рд╣рдЯрд╛рдирд╛ рд╕рдВрднрд╡ рд╣реИ рдЬрдм рддрдХ рдХрд┐ рдзреНрд╡рдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕реНрдерд┐рд░ рди рд╣реЛ рдФрд░ рдЖрдЧреЗ рдмрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХрд╛ рдЕрдиреБрд╢рдВрд╕рд┐рдд рддрд░реАрдХрд╛ рди рд╣реЛ? рдпрд╛ рд╡рд╣ рдмрд┐рдВрджреБ рдкрд╣рд▓реЗ рд╣реА рдкрд╣реБрдВрдЪ рдЧрдпрд╛ рд╣реИ?

@vkarpov15

рд▓реЗрдХрд┐рди рдореИрдВ createConnection рдкрд░ async рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдореИрдВрдиреЗ рдбреАрдмреА рд╕рд░реНрд╡рд░ рдХреЗ рдЦрд┐рд▓рд╛рдл рджреЛ рдкрд░реАрдХреНрд╖рдг рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдП рд╣реИрдВред рдпреВрдЖрд░рдПрд▓ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓рд╛ рдореВрд▓ рдореЛрдВрдЧреЛ-рдЬреЗрдПрд╕ рдХреИрдирд░реА рдЯреЗрд╕реНрдЯ рд╣реИ рдФрд░ рдореИрдВ рд▓рд┐рдЦ рдФрд░ рдкрдврд╝ рд╕рдХрддрд╛ рд╣реВрдВ:

tape('test connection via mongo native', async function testMongoConnection(t) {

  try {

    t.plan(1);
    let db = await MongoClient.connect(dbURL);
    await db.collection('users').insert({name: 'username'});
    let result = await db.collection('users').find({});
    let docs = await result.toArray();
    log.info('result', await result.toArray());
    t.equal(1, docs.length);
    db.collection('users').remove({});

    await db.close();

  } catch (err) {
  console.error(err)
  }
});

рдкрд░рд┐рдгрд╛рдо:

2017-07-04T09:00:34+0200 <info> atlas-api-test.js:28 (Test.testMongoConnection) result [ { _id: 595b3d1146734207bad88f9d, name: 'username' } ]
тЬФ should be equal

рдиреЗрд╡рд▓рд╛ рдкрд░реАрдХреНрд╖рдг рджреНрд╡рд╛рд░рд╛ рд╕рдлрд▓ рдиреЗрд╡рд▓рд╛ рдирд┐рд░реНрдорд╛рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХреЗ рд╕рд╛рде рдХрдиреЗрдХреНрд╢рди:

tape('test connection via mongoose', async function testMongooseConnection(t) {

  try {
      let conn = await mongoose.createConnection(dbURL, {
        useMongoClient: true,
        /*
        // tried these settings too
        user: 'myUserName',
        pass: 'myPassword',
        connectTimeoutMS: 30000,
        rs_name: 'myReplSetName',
        ssl: true,
        auto_reconnect: true,
        */
      });

      let UserSchema = new mongoose.Schema({
        name: String,
      });

      let User = mongoose.model('User', UserSchema);
      let newUser = new User({name: 'username'});
      let createdUser = await newUser.save();

      // just ending test without validating any results
      t.end();

  } catch (err) {
    log.error(err);
  }

});

рдФрд░ рдпрд╣ рдирд┐рдореНрди рддреНрд░реБрдЯрд┐ рдлреЗрдВрдХрддрд╛ рд╣реИ:

/mypath/node_modules/mongodb/lib/replset.js:390 process.nextTick(function() { throw err; })
                                    ^
MongoError: connection 8 to cluster0-shard-00-02-c4nst.domain.com:27017 closed at Function.MongoError.create (/mypath/node_modules/mongodb-core/lib/error.js:29:11)
at Socket.<anonymous> (/mypath/node_modules/mongodb-core/lib/connection/connection.js:202:22)
at Object.onceWrapper (events.js:316:30)
at emitOne (events.js:115:13)
at Socket.emit (events.js:210:7)
at TCP._handle.close [as _onclose] (net.js:549:12)`

рдореИрдВ рдпрд╣рд╛рдВ рдмрд╣реБрдд рдЧрд▓рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореЗрд░реЗ рд▓рд┐рдП рдпрд╣ рдПрдХ рдПрд╕рд┐рдВрдХ/рд╡рд╛рджрд╛ рд╕рдорд╕реНрдпрд╛ рдХреА рддрд░рд╣ рдирд╣реАрдВ рджрд┐рдЦрддрд╛ рд╣реИ;

рдореИрдВ рдореЛрдВрдЧреЛ рдПрдЯрд▓рд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдЬрдм рдореИрдВ {useMongoClient: true} рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдореЗрд░рд╛ рдРрдк рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдХрдиреЗрдХреНрдЯ рд╣реЛ рдЬрд╛рдПрдЧрд╛ рд▓реЗрдХрд┐рди рдбреЗрдЯрд╛рдмреЗрд╕ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдЬрд╡рд╛рдм рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ, рд╡реИрд╕реЗ?

рдореЗрд░рд╛ рдХреЛрдб:
mongoose.connect(config.dbhost, {useMongoClient: true}, function(err){ if(err){ console.log(err); } else { console.log('connected to the database successfuly.'); } });

рд╕рднреА рдХреЗ рд▓рд┐рдП рдмрд╕ рдПрдХ рдиреЛрдЯрд┐рд╕ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВрдиреЗ рдЗрд╕реЗ рдпрд╣рд╛рдВ рдЙрд▓реНрд▓реЗрдЦрд┐рдд рдирд╣реАрдВ рджреЗрдЦрд╛ рд╣реИ: 4.11.1 рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдПрдХ рддреНрд╡рд░рд┐рдд рд░реВрдк рд╕реЗ рджреЗрдЦрдиреЗ рдХреЗ рдмрд╛рдж рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ useMongoClient=true рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдмрдлрд░рд┐рдВрдЧ рд╕рдорд╕реНрдпрд╛ рдареАрдХ рд╣реЛ рдЧрдИ рд╣реИред рдореИрдВ рдХрд▓ рдФрд░ рдкрд░реАрдХреНрд╖рдг рдХрд░реВрдВрдЧрд╛ред рдХрд┐рд╕реА рдФрд░ рдХреЛ?

рдЕрдВрддрд┐рдо рд╕рдорд╛рдзрд╛рди рдХреНрдпрд╛ рд╣реИ?

рдЗрд╕рдиреЗ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд┐рдпрд╛ (рд╡.4.11.1):

рдбреЗрдЯрд╛рдмреЗрд╕.рдЬреЗрдПрд╕

mongoose.connect(databaseUri, { useMongoClient: true })
      .then(() => console.log(`Database connected at ${databaseUri}`))
      .catch(err => console.log(`Database connection error: ${err.message}`));

user.model.js

const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const userSchema = new Schema({ ... });
const User = mongoose.connection.model('User', userSchema);

рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВ

рдЕрдкрдиреЗ рдореЙрдбрд▓ рдХреЛ рдкреНрд░рд╛рд░рдВрдн рдХрд░рддреЗ рд╕рдордп рдХрдиреЗрдХреНрд╢рди рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ (рдзрдиреНрдпрд╡рд╛рдж, @kyrylkov @peterpeterparker):

user.model.js

const User = mongoose.model('User', userSchema);

рдХреНрдпрд╛ рдХреЛрдИ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдмрддрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ {useMongoClient: true} рдХреНрдпрд╛ рд╣реИ рдпрд╛ рд╡рд╣ рдзреНрд╡рдЬ рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИ?

рдореИрдВ рдереЛрдбрд╝рд╛ рдЦреЛ рдЧрдпрд╛ рд╣реВрдБ, рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдХреНрдпрд╛ рдлрд╛рдпрджрд╛ рд╣реИ?

рдореЗрд░рд╛ рдорддрд▓рдм рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рдХрд╣рд╛ рдерд╛, рдореИрдВ рдЪреЗрддрд╛рд╡рдиреА рдХреЗ рд╕рд╛рде рдЬреА рд╕рдХрддрд╛ рдерд╛ рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдЗрд╕ рдкрд░рдо рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЬрд▓реНрджреА рдирд╣реАрдВ рд╣реИред
рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рдЗрддрдирд╛ рдХреБрдЫ рдирд╣реАрдВ рдорд┐рд▓рд╛, рдЗрд╕реЗ рд╕рд╛рдлрд╝ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдЧреНрд░рд┐рдо рд░реВрдк рд╕реЗ thxред

@ рдмреНрд▓реИрдХрдмреЙрдб-рд╕реНрдЯреАрд╡рдмреНрд░рд╢ рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдореИрдВ рдореЛрдВрдЧреЛ рдПрдЯрд▓рд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдпрд╣ рдХрд╛рдо рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ?

@Thinkdiff

рдХреИрд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛? рдпрд╣ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ mLab рдФрд░ MongoDB рдПрдЯрд▓рд╕ рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:

const User = mongoose.model('User', userSchema);

рдХреЗ рдмрдЬрд╛рдп:

const User = mongoose.connection.model('User', userSchema);

рдпрджрд┐ рдореИрдВ рдпреВрдЖрд░рдЖрдИ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХреБрдЫ рдореЗрдЬрдмрд╛рдиреЛрдВ рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧрдореЛрдВрдЧреЛ рдХреНрд▓рд╛рдЗрдВрдЯ рд╡рд┐рдХрд▓реНрдк рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдпрд╣ рд▓рдЯрдХрддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рддреНрд░реБрдЯрд┐ рдлреЗрдВрдХрддрд╛ рд╣реИ:
MongoError: no mongos proxy available at Timeout._onTimeout (/home/ubuntu/code/pss/node_modules/mongoose/node_modules/mongodb-core/lib/topologies/mongos.js:636:28) at ontimeout (timers.js:386:14) at tryOnTimeout (timers.js:250:5) at Timer.listOnTimeout (timers.js:214:5) name: 'MongoError', message: 'no mongos proxy available'
рдпреВрд░реА: рдореЛрдВрдЧреЛрдбрдм: //10.0.1.49 , 10.0.2.158,10.0.3.84/pss
рд╡рд┐рдХрд▓реНрдк: { useMongoClient: true, autoReconnect: true, KeepAlive: 300000, ConnectTimeoutMS: 30000}

рд░реБрдЪрд┐ рд░рдЦрдиреЗ рд╡рд╛рд▓реЗ рдХрд┐рд╕реА рднреА рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд▓рд┐рдП, рдпрд╣рд╛рдВ useMongoClient рдкреИрд░рд╛рдореАрдЯрд░ рдкрд░ рдиреЗрд╡рд▓рд╛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рд╣реИрдВ: http://mongoosejs.com/docs/connections.html#use -mongo-client

"рдореЛрдВрдЧреЛрдЬрд╝ рдХрд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХрдиреЗрдХреНрд╢рди рддрд░реНрдХ 4.11.0 рдХреЗ рд░реВрдк рдореЗрдВ рдмрд╣рд┐рд╖реНрдХреГрдд рд╣реИ ... рдпрд╣ рдмрд╣рд┐рд╖реНрдХрд░рдг рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдореЛрдВрдЧреЛрдбреАрдмреА рдбреНрд░рд╛рдЗрд╡рд░ рдиреЗ рдПрдХ рдПрдкреАрдЖрдИ рдХреЛ рдмрд╣рд┐рд╖реНрдХреГрдд рдХрд░ рджрд┐рдпрд╛ рд╣реИ рдЬреЛ рдореЛрдВрдЧреЛрдбреАрдмреА 3.6 рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдиреЗрд╡рд▓рд╛ рдХреЗ рдХрдиреЗрдХреНрд╢рди рддрд░реНрдХ рдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП рдпрд╣ рдЬреАрдердм рдореБрджреНрджрд╛ рджреЗрдЦреЗрдВред" рдпрд╣рд╛рдБ GitHub рдореБрджреНрджрд╛ рд╣реИ: https://github.com/Automattic/mongoose/issues/5304

@ рдмреНрд▓реИрдХрдмреЙрдб-рд╕реНрдЯреАрд╡рдмреНрд░рд╢ thx рдпрд╣ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд╣рдорд╛рд░реАред рддреЛ рдЕрдЧрд░ рдореИрдВ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕рдордЭреВрдВ

useMongoClient = true => рдирдпрд╛ рдХрдиреЗрдХреНрд╢рди рддрд░реНрдХ рд╕рдХреНрд░рд┐рдп рдХрд░реЗрдВ рдЬреЛ Mongo 3.6 рдХреЗ рд╕рд╛рде рднреА рдХрд╛рдо рдХрд░реЗрдЧрд╛
useMongoClient = false => рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рдиред рдкреБрд░рд╛рдирд╛ рдХрдиреЗрдХреНрд╢рди рддрд░реНрдХ <4.11.0. рд╡рд╣ рдЬреЛ рдкрджрд╛рд╡рдирдд рд╣реЛред

рд╕рд╣реА?

@ рдмреНрд▓реИрдХрдмреЙрдб-рд╕реНрдЯреАрд╡рдмреНрд░рд╢ рдЖрдкрдХреЗ рдХреЛрдб рдХреЗ рдЯреБрдХрдбрд╝реЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ, рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдореИрдВ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛

const User = mongoose.connection.model('User', userSchema);

рд▓реЗрдХрд┐рди

const User = mongoose.model('User', userSchema);

рдФрд░ рдпрд╣ рдЕрднреА рднреА рд╕рдлрд▓ рд░рд╣рд╛ред рдзрдиреНрдпрд╡рд╛рдж

рдиреЗрд╡рд▓рд╛ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ 4.10.8:|

рдореИрдВрдиреЗ рдкрд╛рдпрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдиреЗрд╡рд▓реЗ рдХреЗ рд╕рд╛рде рдПрдХ рдмрдЧ рд╣реЛрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ

рдиреЗрд╡рд▓рд╛ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рд╡рд╛рдкрд╕ рд▓рд╛рдиреЗ рдХреЗ рдмрд╛рдж рд╕рдорд╕реНрдпрд╛ рджреВрд░ рд╣реЛ рдЧрдИ

npm рдЕрдирдЗрдВрд╕реНрдЯреЙрд▓ - рдиреЗрд╡рд▓рд╛ рдмрдЪрд╛рдУ
npm рдЗрдВрд╕реНрдЯрд╛рд▓-рд╕реЗрд╡ рдиреЗрд╡рд▓рд╛@4.10.8

рдореИрдВрдиреЗ рдЗрд╕ рдЪреЗрддрд╛рд╡рдиреА рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдирдЬрд░рдЕрдВрджрд╛рдЬ рдХрд░ рджрд┐рдпрд╛ рд╣реИ рдФрд░ рд╕рдм рдХреБрдЫ рдЙрдореНрдореАрдж рдХреЗ рдореБрддрд╛рдмрд┐рдХ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИред рд╢рд╛рдпрдж, рдпрд╣ рдЕрднреА рдХреЗ рд▓рд┐рдП рд╕рдорд╛рдзрд╛рди рд╣реИред рдмрд╕ рдирдЬрд╝рд░рдЕрдВрджрд╛рдЬрд╝ рдХрд░ рджреЛред

4.10.8 рдкрд░ рд╡рд╛рдкрд╕ рдЖрдиреЗ рд╕реЗ рдореЗрд░рд╛ рдХрдиреЗрдХреНрд╢рди рдлрд┐рд░ рд╕реЗ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореБрдЭреЗ рдЕрднреА рднреА рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИ

Db.prototype.authenticate method will no longe against users in the admin db and will no long connect with auth credentials.

@peterpeterparker рд╕рд╣реАред рдореЗрд░реА рд╕рдордЭ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдиреЗрд╡рд▓рд╛ рдХрд╛ рд╡рд░реНрддрдорд╛рди рдкреНрд░рдорд╛рдгрди рдХреЛрдб рдореЛрдВрдЧреЛрдбрдм 3.6 рдкрд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛, рдЗрд╕рд▓рд┐рдП useMongoClient рд╣рдореЗрдВ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рд╕реЗ рдЖрдЧреЗ рдирд┐рдХрд▓рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИ рдЬрдмрдХрд┐ рдкрд╢реНрдЪ рд╕рдВрдЧрддрддрд╛ рдмрдирд╛рдП рд░рдЦрддрд╛ рд╣реИред рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдореЛрдВрдЧреЛрдбрдм 3.6 рдХреЗ рд▓рд┐рдП рдЕрднреА рддрдХ рдХреЛрдИ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд░рд┐рд▓реАрдЬ рдХреА рддрд╛рд░реАрдЦ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╕реНрд╡рд┐рдЪ рдХрд░рдирд╛ рджрдмрд╛рд╡ рдирд╣реАрдВ рдмрдирд╛ рд░рд╣рд╛ рд╣реИред

@adamreisnz рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреБрдЫ рдмрдЧ рд╣реИрдВ рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдирдпрд╛ рдХрдиреЗрдХреНрд╢рди рддрд░реНрдХ рдореВрд▓ рдбреНрд░рд╛рдЗрд╡рд░ рдХреЗ MongoClient.connect() рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрд╣реБрдд рд╣реА рдкрддрд▓рд╛ рдЖрд╡рд░рдг рд╣реИ, рдЬреЛ рдЕрдм рдХреБрдЫ рд╡рд░реНрд╖реЛрдВ рд╕реЗ mongodb рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХрд╛ рдкрд╕рдВрджреАрджрд╛ рддрд░реАрдХрд╛ рд░рд╣рд╛ рд╣реИред рдПрдХ рдмрд╛рд░ рдЬрдм рдЖрдкрдХрд╛ рдХрдиреЗрдХреНрд╢рди рд╕реНрдерд╛рдкрд┐рдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рдХрдиреЗрдХреНрд╢рди рдХреЛ рдмрдирд╛рдП рд░рдЦрдиреЗ рд╡рд╛рд▓рд╛ рд╡рд╣реА рдореЛрдВрдЧреЛрдбрдм рдбреНрд░рд╛рдЗрд╡рд░ рддрд░реНрдХ рд╣реЛрддрд╛ рд╣реИред useMongoClient рдХреЗрд╡рд▓ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдХрдиреЗрдХреНрд╢рди рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

@ vkarpov15 рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдФрд░ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдХрд╛рдо рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдХреБрдЫ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХрд░рддреЗ рд╣реИрдВ!

@ vkarpov15 рдзрдиреНрдпрд╡рд╛рдж, рдореИрдВ рдЗрд╕реЗ рдЖрдЬрд╝рдорд╛ рджреВрдВрдЧрд╛ рдФрд░ useMongoClient рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рд┐рдЪ рдХрд░реВрдВрдЧрд╛ рдФрд░ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рд╣рдореЗрдВ рдХрд╣рд╛рдВ рд▓реЗ рдЬрд╛рддрд╛ рд╣реИред

рдХреЙрдиреНрд╕реНрдЯ рдиреЗрд╡рд▓рд╛ = рдЖрд╡рд╢реНрдпрдХрддрд╛ ("рдореЛрдВрдЧреЛрдЬрд╝");
рдХреЙрдиреНрд╕реНрдЯ рдбреАрдмреА = " рдореЛрдВрдЧреЛрдбрдм: // рд▓реЛрдХрд▓рд╣реЛрд╕реНрдЯ / рдЯреЗрд╕реНрдЯрд╛рд░реВ ";

mongoose.connection.openUri(db);
mongoose.connection.once ("рдЦреБрд▓рд╛", рдлрд╝рдВрдХреНрд╢рди () {
рдХрдВрд╕реЛрд▓.рд▓реЙрдЧ ("рдХрдиреЗрдХреНрд╢рди рд╕реНрдерд╛рдкрд┐рдд");
}).рдкрд░ ("рддреНрд░реБрдЯрд┐", рдлрд╝рдВрдХреНрд╢рди (рддреНрд░реБрдЯрд┐) {
рдХрдВрд╕реЛрд▓.рд▓реЙрдЧ (рддреНрд░реБрдЯрд┐);
})

--рдореИрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рдорд┐рд▓реА

var mongoose = require('mongoose');
mongoose.Promise = global.Promise;

var mongoDB = mongoose.connect('mongodb://your_database', {
    useMongoClient: true
});

mongoDB
    .then(function (db) {
        console.log('mongodb has been connected');
    })
    .catch(function (err) {
        console.log('error while trying to connect with mongodb');
    });

module.exports = mongoDB;

рдореИрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рдорд┐рд▓реА

@vitorbarros рдЗрд╕рдиреЗ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд┐рдпрд╛ред рдзрдиреНрдпрд╡рд╛рдж!

рдЗрд╕рд╕реЗ рдореЗрд░рд╛ рдХрд╛рдо рдмрдирддрд╛ рд╣реИ:
http://mongoosejs.com/docs/connections.html#use-mongo-client

рдореИрдВрдиреЗ рдпрд╣ рддреНрд╡рд░рд┐рдд рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдпрд╛ рдФрд░ рдЗрд╕рдиреЗ рдХрд╛рдо рдХрд┐рдпрд╛:

// index.js
const mongoose = require('mongoose')
mongoose.Promise = global.Promise;
const db = mongoose.createConnection(`mongodb://localhost/test`)

db.on('error', err => console.log(err))
db.once('open', () => {
  console.log(`Connected to Mongo at: ${new Date()}`)
  db.close(() => {
    console.log(`Disconnected from Mongo at: ${new Date()}`)
  })
})

рддреЛ node index.js рдореБрдЭреЗ рджреЗрддрд╛ рд╣реИ:

Connected to Mongo at: Thu Jul 13 2017 22:54:50 GMT+0000 (UTC)
Disconnected from Mongo at: Thu Jul 13 2017 22:54:50 GMT+0000 (UTC)

рдЖрдк рд╕рднреА рдХреЛ рдзрдиреНрдпрд╡рд╛рдж!

@vitorbarros рдЖрдкрдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ! рдзрдиреНрдпрд╡рд╛рджред

рдореИрдВ рдкреБрд╖реНрдЯрд┐ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ 4.11.3 рдХреЗ рд╕рд╛рде рдХрдиреЗрдХреНрд╢рди рддрд░реНрдХ рдХреЛ рдмрджрд▓рдХрд░ @vitorbarros рдиреЗ рдЬреЛ рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ рд╣реИ рд╡рд╣ рдЪреЗрддрд╛рд╡рдирд┐рдпреЛрдВ рдХреЛ рд╣рдЯрд╛ рджреЗрддрд╛ рд╣реИ рдФрд░ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ

рдЗрд╕ рдзрд╛рдЧреЗ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реБрдЭрд╛рдП рдЧрдП рдореЙрдбрд▓ рд╕рдВрджрд░реНрднреЛрдВ рдХреЛ рджреЛрдмрд╛рд░рд╛ рдХрд░рдиреЗ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред

@vitorbarros рдХрд╛ рд╕рдорд╛рдзрд╛рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ " useMongoClient Option" рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЕрдиреБрд╢рдВрд╕рд┐рдд рддрд░реАрдХрд╛ рд╣реИред

рд╣рд╛рд▓рд╛рдВрдХрд┐, рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ mongoose.Promise = global.Promise; _not_ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд Mongo рдбреНрд░рд╛рдЗрд╡рд░ рдХрд╛ рд╡рд╛рджрд╛ рдХрд░реЗрдЧрд╛ ред "рдореЛрдВрдЧреЛрдбреАрдмреА рдбреНрд░рд╛рдЗрд╡рд░ рдХреЗ рд▓рд┐рдП рд╡рд╛рджреЗ" рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЗ рдЕрдиреБрд╕рд╛рд░, promiseLibrary рд╕рдВрдкрддреНрддрд┐ рдХреЛ connect рд╡рд┐рдзрд┐ рдХреЗ рд╡рд┐рдХрд▓реНрдк рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рднреА рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:

var mongoDB = mongoose.connect('mongodb://your_database', {
    useMongoClient: true,
    promiseLibrary: global.Promise
});

global.Promise рдореВрд▓ рд╡рд╛рджрд╛ рдЗрдВрдЬрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛ред рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ, рдмреНрд▓реВрдмрд░реНрдб рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдЗрдВрдЬрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рднреА рд╕рдВрднрд╡ рд╣реИ, рдЬреИрд╕реЗ promiseLibrary: require('bluebird')

@vitorbarros рд╕рдорд╛рдзрд╛рди рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдФрд░ рд╣рдореЗрдВ @ рдмреЛрдЕрдЬрд╝-рдЕрдорд┐рдд рдЬреИрд╕реЗ рд╡рд╛рджреЗ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рд▓реЗрдХрд┐рди рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдбреЗрдЯрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреМрди рд╕рд╛ рддрд░реАрдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реИ?
рдпреВрдЖрд░рдПрд▓ рдореЗрдВ

mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]

рдпрд╛ рдмреЗрд╣рддрд░ рд╡рд┐рдХрд▓реНрдк рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдФрд░ рдкрд╛рд╕рд╡рд░реНрдб рд╕реЗрдЯ рдХрд░реЗрдВ? рдореБрдЭреЗ рдЕрднреА рдХреЗ рд▓рд┐рдП рд╕рд╣реА рдЬрдЧрд╣ рдирд╣реАрдВ рдорд┐рд▓ рд░рд╣реА рд╣реИред

рдкреНрд░рдорд╛рдгрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдпрд╣ рдХреЗрд╡рд▓ рдПрдХ рд╣реА рддрд░реАрдХрд╛ рд╣реИ?

рдФрд░ рдпрд╣рд╛рдБ рдореЗрд░рд╛ рд╕рдорд╛рдзрд╛рди рд╣реИред рдпрд╣ рддрдм рднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЬрдм рдкрд╣рд▓рд╛ рдХрдиреЗрдХреНрдЯ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред

let firstConnectTimeout = null;
const mongoConnect = () => {
    const mongoDB = mongoose.connect('mongodb://localhost/test', {
        useMongoClient: true
    });

    mongoDB
        .then((db) => {
            clearTimeout(firstConnectTimeout);
        })
        .catch((err) => {
            firstConnectTimeout = setTimeout(mongoConnect, 5000);
        });
};

mongoConnect();

рдЗрд╕реЗ рдпреВрдЖрд░рдПрд▓ рдореЗрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛/рдкрд╛рд╕ рд╡рд┐рдХрд▓реНрдк рдЕрдм рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ
useMongoClient рд╕рдЪ рдореИрдВрдиреЗ рдкрд╛рдпрд╛ред

рд╕реЛрдо, рдЬреБрд▓рд╛рдИ 17, 2017, 20:28 рдХреЛ рдПрдВрдбреНрд░реА рдкреНрд░рд┐рд╕реНрдирд┐рдпрд╛рдХ рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди @github.com
рд▓рд┐рдЦрд╛ рдерд╛:

@vitorbarros https://github.com/vitorbarros рд╕рдорд╛рдзрд╛рди рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдФрд░
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рд╣рдореЗрдВ @ boaz-amit . рдЬреИрд╕реЗ рд╡рд╛рджреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ
https://github.com/boaz-amit рдиреЗ рдХрд╣рд╛ред
рд▓реЗрдХрд┐рди рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдбреЗрдЯрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреМрди рд╕рд╛ рддрд░реАрдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реИ? рдпреВрдЖрд░рдПрд▓ рдореЗрдВ
рдореЛрдВрдЧреЛрдбрдм: // [ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо: рдкрд╛рд╕рд╡рд░реНрдб @
]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]
рдпрд╛ рдмреЗрд╣рддрд░ рд╡рд┐рдХрд▓реНрдк рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдФрд░ рдкрд╛рд╕рд╡рд░реНрдб рд╕реЗрдЯ рдХрд░реЗрдВ? рдореБрдЭреЗ рдЗрд╕рдХреЗ рд▓рд┐рдП рд╕рд╣реА рдЬрдЧрд╣ рдирд╣реАрдВ рдорд┐рд▓ рд░рд╣реА рд╣реИ
рдЕрднреАред

-
рдЖрдк рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ, рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/Automattic/mongoose/issues/5399#issuecomment-315694642 ,
рдпрд╛ рдереНрд░реЗрдб рдХреЛ рдореНрдпреВрдЯ рдХрд░реЗрдВ
https://github.com/notifications/unsubscribe-auth/AAd8Qup1YY4lhUhQccv2kLKtraARxvP0ks5sOxs_gaJpZM4OEnIt
.

@adamreisnz @aprisniak рдЗрд╕ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ, #5419 рджреЗрдЦреЗрдВред рдЗрд╕ рдмреАрдЪ, рдХреГрдкрдпрд╛ рдЕрдкрдиреЗ рдпреВрдЖрд░рдЖрдИ рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо рдФрд░ рдкрд╛рд╕рд╡рд░реНрдб рдбрд╛рд▓реЗрдВ: mongodb://user:pass<strong i="7">@hostname</strong>:port/db

рд╕рд╛рде рд╣реА, рдореИрдВрдиреЗ рдЗрд╕ рд╡рд┐рдХрд▓реНрдк рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдмреНрд▓реЙрдЧ рдкреЛрд╕реНрдЯ рд▓рд┐рдЦрд╛ рд╣реИ рдФрд░ рдпрд╣ рдХреНрдпреЛрдВ рдЖрд╡рд╢реНрдпрдХ рд╣реИ: http://thecodebarbarian.com/mongoose-4.11-use-mongo-client.html

@ vkarpov15 рдореИрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ: рдпреВрдЖрд░рдЖрдИ рдореЗрдВ рдкрд╛рд╕ , рд▓реЗрдХрд┐рди рдЕрднреА рднреА рдЪреЗрддрд╛рд╡рдиреА рд╣реИред

рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рдиреЗрд╡рд▓реЗ рдХрд╛ рдЙрдкрдпреЛрдЧ gridfs-stream рдХреЗ рд╕рд╛рде рдХрд░рддреЗ рд╣реИрдВ:

const mongooseConnect = mongoose.connect(
    process.env.MONGODB_URI || process.env.MONGOLAB_URI,
    {
        useMongoClient: true
    }
)

let gfs
mongooseConnect.then(conn => {
    gfs = Grid(conn.db)
    /** Setting up GFS storage here */
})

рдХреНрдпрд╛ рдЖрдк рд▓реЛрдЧ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЯрд╛рдЗрдкрд┐рдВрдЧ рдореЗрдВ рд▓рд╛рдкрддрд╛ рдХрдиреЗрдХреНрд╢рди рд╡рд┐рдХрд▓реНрдк "useMongoClient" рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдЯрд╛рдЗрдкрд┐рдВрдЧ рдкреИрдХреЗрдЬ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдЗрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдЯрд╛рдЗрдкрд┐рдВрдЧ рд╡рд╛рдкрд╕ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред

рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдореБрдЭреЗ рдЗрд╕ рдЪреЗрддрд╛рд╡рдиреА рдХреЗ рд╕рд╛рде рдХреБрдЫ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдпрд╛ рдирд╣реАрдВ? рдпрд╣ рдареАрдХ рд╣реЛ рдЬрд╛рдПрдЧрд╛, рд╣реИ рдирд╛?

рдореИрдВ рдЗрд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЯрд╛рдЗрдкрд┐рдВрдЧ рдореЗрдВ рд╕рд┐рд░реНрдл useMongoClient рдЬреЛрдбрд╝рддрд╛ рд╣реВрдВред @iamdubx

@FinalDes рдХреИрд╕реЗ? рдореИрдВрдиреЗ mongoose.connect(process.env.DATABASE, { useMongoClient: true }) рдЬреЛрдбрд╝рд╛ рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЕрднреА рднреА рд╕рдВрджреЗрд╢ рдорд┐рд▓рд╛ред рдФрд░ рдореИрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ: рдпреВрдЖрд░рдЖрдИ рдореЗрдВ рдкрд╛рд╕ рдХрд░реЗрдВ

рдРрд╕реА рд╕рдорд╕реНрдпрд╛ рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдиреЗ рдХрд╛ рдмреЗрд╣рддрд░ рддрд░реАрдХрд╛ рдЗрди рджреЛ рдЖрджреЗрд╢реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ:
npm рдЕрдирдЗрдВрд╕реНрдЯреЙрд▓ - рдиреЗрд╡рд▓рд╛ рдмрдЪрд╛рдУ
npm рдЗрдВрд╕реНрдЯрд╛рд▓-рд╕реЗрд╡ рдиреЗрд╡рд▓рд╛@4.10.8

рдзреНрдпрд╛рди рджреЗрдВ: [email protected] рд╕реНрдерд┐рд░ рд╕рдВрд╕реНрдХрд░рдг рд╣реИред

рдЖрдк рд╕рднреА рдЕрдкрдиреА рд╕реНрдХреАрдорд╛ рдФрд░ рдореЙрдбрд▓ рдмрдирд╛рдиреЗ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдЙрди рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХреИрд╕реЗ рдХрд░ рд░рд╣реЗ рд╣реИрдВ?

рдореИрдВрдиреЗ рдзрд╛рдЧреЗ рдореЗрдВ рд╣рд░ рдлрд┐рдХреНрд╕ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИред рдЪреЗрддрд╛рд╡рдиреА рдХреЗ рд╕рд╛рде, рд╕рдм рдХреБрдЫ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдПрдХ рдмрд╛рд░ рдЬрдм рдореИрдВ useMongoClient: true рдпрд╛ mongoose.createConnection рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реВрдВ рддреЛ рдпрд╣ рдЪреЗрддрд╛рд╡рдиреА рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рддрд╛ рд╣реИ рдФрд░ рдореИрдВ рдбреАрдмреА рд╕реЗ рдЬреБрдбрд╝ рд╕рдХрддрд╛ рд╣реВрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореЙрдбрд▓ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдХреЛрдИ рднреА рдХреЛрдб рдЯреНрд░рд┐рдЧрд░ рдХрд░рдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реИред рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рд╣реИ, рдХреЛрдб рдмрд╕ рдХрднреА рдирд╣реАрдВ рдЪрд▓рддрд╛ рд╣реИред

@iamdubx
рдмрд╕ рдЯрд╛рдЗрдкрд┐рдВрдЧ рдЧрд╛рдпрдм рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЬрдм "noImplicitAny" рдХреЗ рд╕рд╛рде рдЪрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: рд╕рддреНрдп, рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рд╣реЛрдЧреА

рдЖрдпрд╛рдд рдиреЗрд╡рд▓рд╛ = рдЖрд╡рд╢реНрдпрдХрддрд╛ ("рдореЛрдВрдЧреЛрдЬрд╝");
рдЖрдпрд╛рдд dotenv = рдЖрд╡рд╢реНрдпрдХрддрд╛ ("рдбреЙрдЯреЗрдирд╡");
dotenv.config ();
рдиреЗрд╡рд▓рд╛ред рд╡рд╛рджрд╛ = рд╡реИрд╢реНрд╡рд┐рдХред рд╡рд╛рджрд╛;
const MONGO_URI=`mongodb://${process.env.MONGODB_HOST}:${process.env.MONGODB_PORT}/${process.env.MONGODB_DB}`;
mongoose.connect(MONGO_URI, {
рдореЛрдВрдЧреЛ рдХреНрд▓рд╛рдЗрдВрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ: рд╕рдЪ,
});

@FinalDes рдЖрдк рдХрд┐рд╕рдХрд╛ рдЬрд┐рдХреНрд░ рдХрд░ рд░рд╣реЗ рд╣реИрдВ? рдХреНрдпрд╛ рдЯрд╛рдЗрдкрд┐рдВрдЧ рдЧрд╛рдпрдм рд╣реИ? рдореЗрд░реЗ рдкрд╛рд╕ рдКрдкрд░ рдПрдХ рд╣реА рдХреЛрдб рд╣реИ рдФрд░ рдПрдХ рддреНрд░реБрдЯрд┐ рд╣реИред

рдореБрдЭреЗ @Snow-Okami . рдХреЗ рд╕рд╛рде рднреА рдпрд╣реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ рд╣реИ

  1. const mongoDB = mongoose.connect(config.database, { useMongoClient: true });
    рдпрд╣ рдЪреЗрддрд╛рд╡рдиреА рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рддрд╛ рд╣реИ рдФрд░ рдбреАрдмреА рд╕реЗ рдЬреБрдбрд╝рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореЙрдбрд▓ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рд╡рд╛рд▓реА рд╣рд░ рдЪреАрдЬ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддреА рд╣реИ (рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ/рдкреЛрд╕реНрдЯ рдХрд░реЗрдВ)ред рдХреЛрдИ рддреНрд░реБрдЯрд┐ рд╡рд╛рдкрд╕ рдирд╣реАрдВ рдЖрддреА рд╣реИред
  2. const mongoDB = mongoose.connect(config.database, function(){ useMongoClient: true });
    рдФрд░ рдпрд╣ рдЙрди рджреЛ рдЪреЗрддрд╛рд╡рдирд┐рдпреЛрдВ рдХреЛ рджреЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рд╕рдм рдХреБрдЫ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдХреГрдкрдпрд╛ рдХрдо рд╕реЗ рдХрдо рдкрд┐рдЫрдбрд╝рд╛ рд╕рдВрдЧрддрддрд╛ рджреЗрдВ, рд╣рдорд╛рд░рд╛ рдЙрддреНрдкрд╛рджрди рдирд┐рд░реНрдорд╛рдг рд╕рд░реНрд╡рд░ рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реИред
рдлреАрдЪрд░ рдЕрдкрдбреЗрд╢рди рдЕрдЪреНрдЫрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдореЗрдердб рд╕рд┐рдЧреНрдиреЗрдЪрд░ рдпрд╛ рдХреЙрд▓ рдореЗрдВ рдмрджрд▓рд╛рд╡ рди рдХрд░реЗрдВред

@Nikunjkрд╕рдВрдШрд╡реА рдпрд╣ рдХреЗрд╡рд▓ рдПрдХ рдЪреЗрддрд╛рд╡рдиреА рд╣реИ, рдХреБрдЫ рднреА рд╡рд┐рдлрд▓ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

@iamdubx рдХрд┐рд╕ рддрд░рд╣ рдХреА рддреНрд░реБрдЯрд┐?

@FinalDes рдкрджрд╛рд╡рдирддрд┐ рддреНрд░реБрдЯрд┐, рд╣рдо рдЗрд╕ рд╡рд┐рд╖рдп рдореЗрдВ рдФрд░ рдХрд┐рд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ?

рдЗрд╕рдиреЗ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд┐рдпрд╛: (рд╡.4.11.4)

const MONGO_URI = process.env.MONGO_URI
const mongoose = require('mongoose');

// Use your own promis library
mongoose.Promise = require('bluebird');

// connect to mongo, use Mongo Client
mongoose.connect(MONGO_URI, {useMongoClient: true})
  .then(({db: {databaseName}}) => console.log(`Connected to ${databaseName}`))
  .catch(err => console.error(err));

const poemSchema = mongoose.Schema({
    name: String,
    text: String
});

const Poem = mongoose.model('Poem', poemSchema);

const insertPoem = poem =>
  (new Poem(poem)).save( (err, newPoem) => 
    console.log(err || newPoem));

insertPoem({name: 'poemName', text: 'this is a poem'})

// рдбреАрдмреА рдХрдиреЗрдХреНрд╢рди
рд╡рд░ рдиреЗрд╡рд▓рд╛ = рдЖрд╡рд╢реНрдпрдХрддрд╛ ('рдиреЗрд╡рд▓рд╛');
рдиреЗрд╡рд▓рд╛ред рд╡рд╛рджрд╛ = рд╡реИрд╢реНрд╡рд┐рдХред рд╡рд╛рджрд╛;
mongoose.connect('mongodb://localhost/login_register', {
рдореЛрдВрдЧреЛ рдХреНрд▓рд╛рдЗрдВрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ: рд╕рддреНрдп
})
.then(() => рдХрдВрд╕реЛрд▓.рд▓реЙрдЧ('рдХрдиреЗрдХреНрд╢рди рд╕рдХреНрд╕реЗрд╕рдлреБрд▓'))
рдХреИрдЪ ((рдЧрд▓рддреА) => рдХрдВрд╕реЛрд▓ред рддреНрд░реБрдЯрд┐ (рдЧрд▓рддреА));
// рдбреАрдмреА рдХрдиреЗрдХреНрд╢рди рдЕрдВрдд

рдпрд╣ рдореЗрд░реЗ рдХрд╛рдо рдирд╣реАрдВ рдЖрддрд╛ред рдореЗрд░реЗ рдкрд╛рд╕ рдЕрднреА рднреА рдХрдВрд╕реЛрд▓ рдЪреЗрддрд╛рд╡рдиреА рд╣реИред рдФрд░ рдХреЛрдИ рд╕реНрдкрд╖реНрдЯ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рдиреЗрд╡рд▓рд╛ рднрдпрд╛рдирдХ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рд╕рдмрд╕реЗ рдЦрд░рд╛рдм рдкреНрд░рд▓реЗрдЦрди рд╕рд╛рдЗрдЯ рдЬреЛ рдореИрдВрдиреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдореЗрдВ рджреЗрдЦреА рдереА рдЬреЛ рдЗрддрдиреА рд▓реЛрдХрдкреНрд░рд┐рдп рдереАред рдХрд┐рддрдиреА рд╢рд░реНрдо рдХреА рдмрд╛рдд рд╣реИ!

рдЕрдм рдореИрдВ рд░реЗрдерд┐рдВрдХрдбреАрдмреА рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдХреА рд╕реЛрдЪ рд░рд╣рд╛ рд╣реВрдВред рд▓рд┐рдирдХреНрд╕ рдлрд╛рдЙрдВрдбреЗрд╢рди - рдпрд╣ рдЧрдВрднреАрд░ рд╣реИред
рдкреЛрд╕реНрдЯрдЧреНрд░реЗ рднреА рдХрдорд╛рд▓ рд╣реИред

рдореЛрдВрдЧреЛ - рдмрд╣реБрдд, рдмрд╣реБрдд рд╢рд░реНрдо рдХреА рдмрд╛рдд рд╣реИред

@iamdubx рдХреНрдпрд╛ рдЖрдкрдиреЗ рдКрдкрд░ рдореЗрд░реЗ рд╕рдорд╛рдзрд╛рди рдХреА рдХреЛрд╢рд┐рд╢ рдХреА? рдХреНрдпрд╛ рдЖрдк рдЗрд╕ рдкрд░ рдЪреЗрддрд╛рд╡рдиреА рдЪрд┐рдкрдХрд╛ рд╕рдХрддреЗ рд╣реИрдВ? рд╢рд╛рдпрдж рдореИрдВ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реВрдБ :)

@iamdubx рдЖрдкрдХрд╛ рдЪреЗрддрд╛рд╡рдиреА рд╕рдВрджреЗрд╢ рдкреЛрд╕реНрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реИ?

@ рдлрд╝рд╛рдЗрдирд▓рдбреЗрд╕ @ рд╢рдореНрд╕-рдЕрд▓реА рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛ рдерд╛, рдпрд╣ рд╡рд╣реА рдкрджрд╛рд╡рдирддрд┐ рддреНрд░реБрдЯрд┐ рд╣реИ рдЬреИрд╕рд╛ рд╡рд┐рд╖рдп рдореЗрдВ рд╣реИред рдпрд╣ рд╡рд┐рд╖рдп рдХрд┐рд╕ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ!

(node:3304) DeprecationWarning: `open()` is deprecated in mongoose >= 4.11.0, use `openUri()` instead, or set the `useMongoClient` option if using `connect()` or `createConnection()`. See http://mongoosejs.com/docs/connections.html#use-mongo-client
Server listening on port: 7777
Db.prototype.authenticate method will no longer be available in the next major release 3.x as MongoDB 3.6 will only allow auth against users in the admin db and will no longer allow multiple credentials on a socket. Please authenticate using MongoClient.connect with auth credentials.

@iamdubx рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ, рдпрд╣ рд╡рд╣реА рдЪреЗрддрд╛рд╡рдиреА рд╣реИ рдЬреЛ рдореЗрд░реЗ рдкрд╛рд╕ рдереА рдФрд░ рдЙрдкрд░реЛрдХреНрдд рд╕рдорд╛рдзрд╛рди рдЬреЛ рдореИрдВрдиреЗ рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛ рдерд╛, рд╡рд╣ рдореЗрд░реЗ рд▓рд┐рдП рдЗрд╕реЗ рдареАрдХ рдХрд░ рд░рд╣рд╛ рдерд╛ред рдХреНрдпрд╛ рдЖрдк рдЕрдкрдирд╛ рдЕрджреНрдпрддрди рдХреЛрдб рдкреЗрд╕реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ?

рдЗрд╕реА рд╕реЗ рдореЗрд░рд╛ рдХрд╛рдо рдмрдирд╛ рд╣реИ:

// ES6 promises
mongoose.Promise = Promise;

// mongodb connection
mongoose.connect("mongodb://localhost:27017/sandbox", {
  useMongoClient: true,
  promiseLibrary: global.Promise
});

var db = mongoose.connection;

// mongodb error
db.on('error', console.error.bind(console, 'connection error:'));

// mongodb connection open
db.once('open', () => {
  console.log(`Connected to Mongo at: ${new Date()}`)
});

@afoke рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдзрдиреНрдпрд╡рд╛рдж

@FinalDes рдЖрдкрдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИ рджреЛрд╕реНрддред

рдпрд╣ рдореЗрд░рд╛ рдирдпрд╛ рдХрд╛рд░реНрдпрдкреНрд░рд╡рд╛рд╣ рд╣реИ, рдЬреЛ рдЪреЗрддрд╛рд╡рдирд┐рдпреЛрдВ рдФрд░ рдмрд╣рд┐рд╖реНрдХрд░рдгреЛрдВ рдХреЗ рдЕрдиреБрд░реВрдк рд╣реЛрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣рд╛ рд╣реИ:

// db.js
const model = require('./model');
const mongoose = require('mongoose');
mongoose.Promise = global.Promise;


async function db(uri) {
  const con = await mongoose
    .createConnection(uri, {
      useMongoClient: true,
    });

  const {User} = model(con);

  // do something with User
  ...

  // the interface for the server
  return {
    create: params => User.create(params),
    ...
  };
}


module.exports = db;

рдФрд░ рдЕрдм рдореЙрдбрд▓ рдореЙрдбреНрдпреВрд▓ рдХрдиреЗрдХреНрд╢рди рдХрд╛ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рджреЗрддрд╛ рд╣реИ

// model.js
const {Schema} = require('mongoose');


const UserSchema = new Schema({
  name: String,
  age: Number,
});

// Other Schemas
...

module.exports = con => ({
  User: con.model('User', UserSchema),
  ...
});

рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдХреЛрдИ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рджрд┐рд╢рд╛рдирд┐рд░реНрджреЗрд╢?

@iamdubx рд▓рдЧрддрд╛ рд╣реИ рдЬреИрд╕реЗ рдЖрдк рдЪреЗрддрд╛рд╡рдиреА рдФрд░ рддреНрд░реБрдЯрд┐ рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рдХреЛ рдирд╣реАрдВ рд╕рдордЭрддреЗ рд╣реИрдВред

рд╡рд┐рдЪрд╛рд░рд╛рдзреАрди рдЪреЗрддрд╛рд╡рдиреА рдХреБрдЫ рднреА рдирд╣реАрдВ рддреЛрдбрд╝рддреА рд╣реИ, рд▓реЗрдХрд┐рди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдХрд┐рд╕реА рдРрд╕реА рдЪреАрдЬрд╝ рдХреА рдЪреЗрддрд╛рд╡рдиреА рджреЗрддреА рд╣реИ рдЬрд┐рд╕реЗ рдЕрдЧрд▓реА рдмрдбрд╝реА рд░рд┐рд▓реАрдЬрд╝ рдореЗрдВ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдиреЗрд╡рд▓рд╛ рднрдпрд╛рдирдХ рд╣реИред

рдЗрд╕рд▓рд┐рдП рдзреНрдпрд╛рди рд░рдЦреЗрдВ, рдбреЗрд╡рд▓рдкрд░ рджреНрд╡рд╛рд░рд╛ рдХрд┐рд╕реА рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рд╣рдЯрд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЖрдкрдХреЛ рдЪреЗрддрд╛рд╡рдиреА рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдпрд╣ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдорд┐рд▓ рд░рд╣реА рд╣реИред рдореИрдВ рдЖрдкрд╕реЗ рдпрд╣ рднреА рдпрд╛рдж рд░рдЦрдиреЗ рдХрд╛ рдЖрдЧреНрд░рд╣ рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдк рдЗрд╕рдХрд╛ рдирд┐: рд╢реБрд▓реНрдХ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╢рд╛рдпрдж рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рд╕рдВрджреЗрд╣ рдХрд╛ рд▓рд╛рдн рджреЗрдВ рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рдЖрдк рдПрдХ рддрдВрддреНрд░-рдордВрддреНрд░ рдлреЗрдВрдХ рджреЗрдВ

@chrisdothtml

рд╡рд┐рдЪрд╛рд░рд╛рдзреАрди рдЪреЗрддрд╛рд╡рдиреА рдХреБрдЫ рднреА рдирд╣реАрдВ рддреЛрдбрд╝рддреА рд╣реИ, рд▓реЗрдХрд┐рди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдХрд┐рд╕реА рдРрд╕реА рдЪреАрдЬрд╝ рдХреА рдЪреЗрддрд╛рд╡рдиреА рджреЗрддреА рд╣реИ рдЬрд┐рд╕реЗ рдЕрдЧрд▓реА рдмрдбрд╝реА рд░рд┐рд▓реАрдЬрд╝ рдореЗрдВ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдпрд╣ рдкреНрд░рджреВрд╖рдг рдкрд░реАрдХреНрд╖рдг рдФрд░ рдХрдВрд╕реЛрд▓ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рд╣рд▓реНрдХрд╛ рдкрд░реЗрд╢рд╛рди рд╣реИред

рдиреЗрд╡рд▓рд╛ рднрдпрд╛рдирдХ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рд╕рдмрд╕реЗ рдЦрд░рд╛рдм рдкреНрд░рд▓реЗрдЦрди рд╕рд╛рдЗрдЯ рдЬреЛ рдореИрдВрдиреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдореЗрдВ рджреЗрдЦреА рдереА рдЬреЛ рдЗрддрдиреА рд▓реЛрдХрдкреНрд░рд┐рдп рдереАред рдХрд┐рддрдиреА рд╢рд░реНрдо рдХреА рдмрд╛рдд рд╣реИ!

рд╡рд╣ рдЕрд╕рднреНрдп рд╣реЛ рд░рд╣рд╛ рд╣реИ рдЬреЛ рдереЛрдбрд╝рд╛ рдкрд░реЗрд╢рд╛рди рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рднреА рд╣реИ рд▓реЗрдХрд┐рди рд╡рд╣ рдиреЗрд╡рд▓рд╛ рдкреНрд░рд▓реЗрдЦрди рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рдПрдХ рдмрд╣реБрдд рд╣реА рдорд╛рдиреНрдп рдмрд┐рдВрджреБ рдмрдирд╛рддрд╛ рд╣реИред рдпрд╣ рдЕрдм рддрдХ рдХрд╛ рд╕рдмрд╕реЗ рдЦрд░рд╛рдм рджрд╕реНрддрд╛рд╡реЗрдЬ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдиреЗрд╡рд▓рд╛ рдореЛрдВрдЧреЛ рдХреНрд▓рд╛рдЗрдВрдЯ рдПрдкреАрдЖрдИ рдХреЛ рдЖрдЧреЗ рдмрдврд╝рд╛рддрд╛ рд╣реИред рдЬреЛ рдмрд╣реБрдд рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, Mongoose рдХреЗ рдЙрдкрдпреЛрдЧ рдФрд░ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдХреЛ рднреНрд░рдорд┐рдд рдХрд░рддрд╛ рд╣реИред

рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрднрд╛рд╡рд┐рдд рд╕рдорд╛рдзрд╛рди рд╣реЛрдЧрд╛:

  • рдЗрд╕реЗ рдХрд░рдирд╛ рдмрдВрдж рдХрд░реЛ
  • Mongo рдХреНрд▓рд╛рдЗрдВрдЯ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдирд┐рдХрд╛рд▓реЗрдВ
  • рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдХреНрд▓рд╛рдЗрдВрдЯ рдФрд░ рдиреЗрд╡рд▓рд╛ рдХреЗ рдмреАрдЪ рдХрдиреЗрдХреНрд╢рди рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рдкреНрд░рджрд╛рди рдХрд░реЗрдВ

рдореИрдВ рдпрд╣ рднреА рд╕реБрдЭрд╛рд╡ рджреВрдВрдЧрд╛ рдХрд┐ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдХреА рдЦреЛрдЬ рдХреНрд╖рдорддрд╛ рдХреЛ рдХрдИ рдкреГрд╖реНрдареЛрдВ рдореЗрдВ рддреЛрдбрд╝рдХрд░ рдФрд░ рдирдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рджреЗрдВ рдХрд┐ рдХреБрдЫ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП Mongoose рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рдХрд░ рд░рд╣рд╛ рд╣реИред

рдореЗрд░реЗ рдкрд╛рд╕ рдпрд╣ рддреНрд░реБрдЯрд┐ рдереА, рд▓реЗрдХрд┐рди рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ {useMongoClient: true} рд╡рд┐рдХрд▓реНрдк рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрд╛рдж рдпрд╣ рдЧрд╛рдпрдм рд╣реЛ рдЧрдпрд╛ред
рдореИрдВ MongoDb ver рдХреЗ рд╕рд╛рде рдбреЗрдмрд┐рдпрди 9, рдкрд░реАрдХреНрд╖рдг рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред 3.2.11 рдФрд░ рдиреЗрд╡рд▓рд╛ рджреЗрдЦреЗрдВред 4.10.4.
рдореЗрд░реЗ рдкрд╛рд╕ 'рдореЛрдВрдЧреЛрдбреАрдмреА рд╕реЗ рдХрдиреЗрдХреНрдЯреЗрдб' рд╕рдВрджреЗрд╢ рд╣реИ (рдиреАрдЪреЗ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдХреЛрдб рджреЗрдЦреЗрдВ), рд╕рдм рдХреБрдЫ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

(<рдХреЛрдИ рднреА> рдиреЗрд╡рд▓рд╛)ред рд╡рд╛рджрд╛ = рд╡реИрд╢реНрд╡рд┐рдХред рд╡рд╛рджрд╛;
mongoose.connect(process.env.MONGODB_URI, {useMongoClient: true});
рдХрд╛рд╕реНрдЯ рдбреАрдмреА = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error:'));
рдПрдХ рдмрд╛рд░ ('рдЦреБрд▓рд╛', () => {
рдХрдВрд╕реЛрд▓.рд▓реЙрдЧ ('рдореЛрдВрдЧреЛрдбреАрдмреА рд╕реЗ рдЬреБрдбрд╝рд╛');
рд╕реЗрдЯрд░реВрдЯреНрд╕ (рдРрдк);
app.get('/*', function(req, res) {
res.sendFile(path.join(__dirname, '../public/index.html'));
});
app.listen(app.get('port'), () => {
рдХрдВрд╕реЛрд▓.рд▓реЙрдЧ ('MyApp рдкреЛрд░реНрдЯ рдкрд░ рд╕реБрди рд░рд╣рд╛ рд╣реИ' + рдРрдк.рдЧреЗрдЯ ('рдкреЛрд░реНрдЯ'));
});
});

рдмрд╕ рдореМрдЬреВрджрд╛ рдиреЗрд╡рд▓рд╛ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдЕрдирдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░реЗрдВ рдЬреЛ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╣реИ рдФрд░ рдирд┐рдЪрд▓рд╛ рд╕рдВрд╕реНрдХрд░рдг npm install [email protected] --save рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВред рдХреБрдЫ рдФрд░ рдХрд░рдиреЗ рдХреА рдЬрд░реВрд░рдд рдирд╣реАрдВ рд╣реИ рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЖрдкрдХреЗ рдХрд╛рдо рдЖрдПрдЧрд╛ред

mongoose.connect(database.host, { useMongoClient: true });

рдЗрд╕рд╕реЗ рдореЗрд░реА рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рд╣реЛ рдЧрдИред рд▓реЗрдХрд┐рди рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдпрд╣ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдФрд░ рдЪреЗрддрд╛рд╡рдиреА рдЖ рд░рд╣реА рдереАред

рдкрджрд╛рд╡рдирддрд┐ рдЪреЗрддрд╛рд╡рдиреА: рдиреЗрд╡рд▓рд╛: mpromise (рдиреЗрд╡рд▓рд╛ рдХрд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╡рд╛рджрд╛ рдкреБрд╕реНрддрдХрд╛рд▓рдп) рдкрджрд╛рд╡рдирдд рд╣реИ, рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд╡рд╛рджреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рдкреНрд▓рдЧ рдЗрди рдХрд░реЗрдВ: http://mongoosejs.com/docs/promises.html

рдпрд╣ рдХреЛрдб рд╕рднреА рдмрд╣рд┐рд╖реНрдХрд░рдг рдЪреЗрддрд╛рд╡рдирд┐рдпреЛрдВ рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИ:
```рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ
рдиреЗрд╡рд▓рд╛ред рд╡рд╛рджрд╛ = рд╡реИрд╢реНрд╡рд┐рдХред рд╡рд╛рджрд╛;
mongoose.connect (рдпреВрд░реА, {
рдЬрд┐рдВрджрд╛ рд░рдЦрдирд╛: рд╕рдЪ,
рдкреБрди: рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕: Number.MAX_VALUE,
рдореЛрдВрдЧреЛ рдХреНрд▓рд╛рдЗрдВрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ: рд╕рддреНрдп
});
````
рд▓рд┐рдВрдХ рджреНрд╡рд╛рд░рд╛ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА -> http://mongoosejs.com/docs/connections.html#use -mongo-client

@рдмреНрд░рд┐рдХреНрд╕ рд╢рд╛рдирджрд╛рд░! рдзрдиреНрдпрд╡рд╛рдж!

@bricss рдЖрдкрдиреЗ рдореЗрд░рд╛ рджрд┐рди рдмрдирд╛ рджрд┐рдпрд╛ред

рдХрд┐рд╕реА рдиреЗ рд╣реАрд░реЛ рдмреИрдЬ рдЕрд░реНрдЬрд┐рдд рдХрд┐рдпрд╛ ...

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: @bricss рдЗрд╕рдиреЗ рдореЗрд░реЗ рд▓рд┐рдП рдмрд╣рд┐рд╖реНрдХрд░рдг рдЪреЗрддрд╛рд╡рдирд┐рдпреЛрдВ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░ рджрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдореИрдВ рдЕрдкрдиреЗ mLab рд╕реИрдВрдбрдмреЙрдХреНрд╕ рд╕реЗ рдбреЗрдЯрд╛ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рдХрд░ рд╕рдХрд╛ред рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ MongoDB рдХреЗ рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдореИрдВ рдмрд╛рдж рдореЗрдВ рдЗрд╕рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ред

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: @bricss рдЕрдм рдпрд╣ рдирд╡реАрдирддрдо рдиреЗрд╡рд▓рд╛ 4.11.9 рдФрд░ Azure рдкрд░ Cosmos DB рд╕реЗ рдХрдиреЗрдХреНрд╢рди рдХреЗ рд╕рд╛рде рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИред

@bricss : рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХреА рдЧрдИ рдИрдВрдЯреЗрдВ! рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рднрд▓реЗ рд╣реА рдореИрдВ рдЕрдкрдиреЗ рд╕реНрдерд╛рдиреАрдп рдореЗрдВ рдореЛрдВрдЧреЛрдбрдм рдХреЗ рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ: +1:

@рдмреНрд░рд┐рдХреНрд╕ рдЕрд╡реЗрд╕реЛ ! рд▓реЗрдХрд┐рди рдЖрдк "reconnectTries" рдХреЗ рд▓рд┐рдП рдПрдХ рдЫреЛрдЯреА рд╕рдВрдЦреНрдпрд╛ рдбрд╛рд▓рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдкрдХреЗ рдбреАрдмреА рдХреЗ рд╕рд╛рде рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рд╣реИ рддреЛ рдЖрдк рдкреВрд░реЗ рджрд┐рди рдлрд┐рд░ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

@afoke рдХреЗ рд╕рдорд╛рдзрд╛рди рдиреЗ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд┐рдпрд╛, рдХреЗрд╡рд▓ рддрднреА рдЬрдм рдореИрдВ рдХрдиреЗрдХреНрд╢рди рд╕реНрдЯреНрд░рд┐рдВрдЧ рдпрд╛рдиреА mongodb://localhost:27017/test рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдбреАрдмреА рдШреЛрд╖рд┐рдд рдХрд░рддрд╛ рд╣реВрдВ рд▓реЗрдХрд┐рди mongodb://localhost:27017 рдирд╣реАрдВ

рдХреНрдпрд╛ рдореИрдВ рдЗрд╕ рдЪреЗрддрд╛рд╡рдиреА рдХреЗ рдмрд┐рдирд╛ 2 DB рдХрд╛ рдХрдиреЗрдХреНрд╢рди рдмрдирд╛ рд╕рдХрддрд╛ рд╣реВрдБ? рдореБрдЭреЗ рд╡рд┐рднрд┐рдиреНрди рдбреАрдмреА рдХреЗ рд╕рд╛рде рдЕрдкрдиреЗ рдореЙрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИред

рдиреЗрд╡рд▓рд╛ v^4.11.6 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдЬрдм useMongoClient рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рддреЛ рдЪреЗрддрд╛рд╡рдиреА рдЧрд╛рдпрдм рд╣реЛ рдЧрдИред

const uri = "http://blablabla.blo/blaDB"; mongoose.Promise = global.Promise; mongoose.connection.on('error', (err) => { console.error( рдиреЗрд╡рд▓рд╛ рдХрдиреЗрдХреНрд╢рди рддреНрд░реБрдЯрд┐: ${err}`);
рдкреНрд░рдХреНрд░рд┐рдпрд╛.рдмрд╛рд╣рд░ рдирд┐рдХрд▓реЗрдВ(1);
});
mongoose.connect(uri, {useMongoClient: true});

 // load models
 require('./model1');
 // ...
 require('./modelN');`

рдЗрд╕ рддрд░рд╣ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдЬреБрдбрд╝рдиреЗ рд╕реЗ рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рд╣реЛ рдЬрд╛рддреА рд╣реИ:
mongoose.connect(url,{user:'username',pass:'mypassword',useMongoClient:true});

рдХреНрдпрд╛ рдпреЗ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╕рдорд╕реНрдпрд╛рдПрдВ рдкреИрджрд╛ рдХрд░реЗрдВрдЧреА, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд╕реБрд░рдХреНрд╖рд╛ рдореЗрдВ?

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

mongoose.connection.openUri('mongodb://localhost/test')
  .once('open', () => console.log('Good to go !'))
  .on('error', (error) => {
    console.warn('Warning', error);
  });

рдореБрдЭреЗ рдиреАрдЪреЗ рдХреЗ рд╕рдорд╛рди рд╣реА рдмрд╣рд┐рд╖реНрдХрд░рдг рдЪреЗрддрд╛рд╡рдиреА рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛:
(рдиреЛрдб: 2300) рдкрджрд╛рд╡рдирддрд┐ рдЪреЗрддрд╛рд╡рдиреА: open() рдиреЗрд╡рд▓рд╛ рдореЗрдВ рдкрджрд╛рд╡рдирдд рд╣реИ >= 4.11.0, рдЗрд╕рдХреЗ рдмрдЬрд╛рдп openUri() рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдпрд╛ connect() рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдкрд░ useMongoClient рд╡рд┐рдХрд▓реНрдк рд╕реЗрдЯ рдХрд░реЗрдВ рдпрд╛ createConnection() ред рджреЗрдЦреЗрдВ http://mongoosejs.com/docs/connections.html#use -mongo-client

рд╕рдорд╛рдзрд╛рди

рдореИрдВрдиреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдФрд░ рдпрд╣ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдХреЛрдИ рдмрд╣рд┐рд╖реНрдХрд░рдг рдЪреЗрддрд╛рд╡рдиреА рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИред

mongoose.connect('mongodb://127.0.0.1:27017/your-database-name', { useMongoClient: true, PromiseLibrary: Global.Promise});

рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЗрд╕рд╕реЗ рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рд▓реЛрдЧреЛрдВ рдХреЛ рдорджрдж рдорд┐рд▓реЗрдЧреАред

рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдореЛрдВрдЧреЛ рдПрдЯрд▓рд╕ рд╕реЗрд╡рд╛ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╕рдордп рдпрд╣ рд╕рд┐рд░реНрдл {useMo ngoClient: true } рд╡рд┐рдХрд▓реНрдк рд╕реЗ рдХрдиреЗрдХреНрдЯ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рдмрд┐рдирд╛ рдХрдиреЗрдХреНрд╢рди рдЕрдм рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред

рдХреЛрдИ рднреА рдПрдХ рд╣реА рдореБрджреНрджреЗ рдХреЗ рд╕рд╛рде?

рдореИрдВрдиреЗ рдЕрдкрдиреА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рд╕рд┐рд░реНрдл mongoose.connect рдХреЛ mongoose.createConnection рдореЗрдВ рдмрджрд▓рдХрд░ рдХрд┐рдпрд╛ рдерд╛

mongoose.createConnection (config.uri, (рдЧрд▓рддреА) => {
рдЕрдЧрд░ (рдЧрд▓рддреА) {
рдХрдВрд╕реЛрд▓.рд▓реЙрдЧ ('рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдирд╣реАрдВ рд╣реЛ рд╕рдХрд╛:', рдЗрд░реЗрдЯ);
} рдЕрдиреНрдп {
рдХрдВрд╕реЛрд▓.рд▓реЙрдЧ ('рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдХрдиреЗрдХреНрдЯреЗрдб:' + config.db);
}
});

рдореИрдВрдиреЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдЗрд╕ рддрд░рд╣ рд╣рд▓ рдХрд┐рдпрд╛ (рдореЛрдВрдЧреЛрдЬрд╝ 4.12.0, рдиреЛрдбрдЬреЗрдПрд╕ - 7.10.1)

mongoose.Promise = require('bluebird');
mongoose.connect('mongodb://localhost:27017/books_exchange', {
  useMongoClient: true,
  promiseLibrary: require('bluebird')
}).then(() => {
  var userSchema = new mongoose.Schema({
    name: String,
    password: String
  });
  var User = mongoose.model('User', userSchema);

  var person = new User({
    name: "John",
    password: "qwerty"
  });

  person.save().then(() => {
    console.log('Data saved');
  }).catch(e => {
    console.log(e);
  });
}).catch(e => {
  console.log('Error while DB connecting');
  console.log(e);
});
рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

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

jeneser picture jeneser  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

adamreisnz picture adamreisnz  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

ghost picture ghost  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

wlingke picture wlingke  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

ArThoX picture ArThoX  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ