рдХреИрдЪ рд╣реИрдВрдбрд▓рд░ рдореЗрдВ mongoose.connect()
рддреНрд░реБрдЯрд┐ рдХреЛ рдХреИрд╕реЗ рд╣реИрдВрдбрд▓ рдХрд░реЗрдВ? рдореИрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдЪреЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рдХреНрдпреЛрдВрдХрд┐ mongoose.connect()
рдЕрд╕реНрд╡реАрдХреГрдд рд╡рд╛рджреЗ рдХреЛ рд╡рд╛рдкрд╕ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЕрдЧрд░ рдореИрдВ рдХреЙрд▓рдмреИрдХ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддрд╛ рд╣реВрдВ рддреЛ рдпрд╣ рдХреЗрд╡рд▓ рдЕрд╕реНрд╡реАрдХрд╛рд░ рд╡рд╛рджрд╛ рд▓реМрдЯрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рд╕рд╣реА рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИред
рдЙрджрд╛рд╣рд░рдг:
mongoose.connect('mongodb://127.0.0.2/test') // if error it will throw async error
.then(() => { // if all is ok we will be here
return server.start();
})
.catch(err => { // we will not be here...
console.error('App starting error:', err.stack);
process.exit(1);
});
рд╕рдорд╛рдзрд╛рди:
mongoose.connect('mongodb://127.0.0.2/test', function() { /* dummy function */ })
.then(() => {
return server.start();
})
.catch(err => { // mongoose connection error will be handled here
console.error('App starting error:', err.stack);
process.exit(1);
});
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ mongoose.connect()
рдкрд┐рдЫрдбрд╝реА рд╕рдВрдЧрддрддрд╛ рдХреЛ рддреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд╛рдкрд╕реА рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд┐рдП рдЧрдП рд╡рд╛рджреЗ рдХреЗ рдмрдЬрд╛рдп рдПрд╕рд┐рдВрдХ рддреНрд░реБрдЯрд┐ рдлреЗрдВрдХрддрд╛ рд╣реИред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЙрдореНрдореАрдж рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдиреЗрд╡рд▓рд╛ рдХрдиреЗрдХреНрд╢рди рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рд╕рд╛рде рдХреБрдЫ рдЧрд▓рдд рд╣реЛрдиреЗ рдкрд░ рддреНрд░реБрдЯрд┐ рдХреЛрдб рдХреЗ рд╕рд╛рде рдЖрд╡реЗрджрди рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рдпрджрд┐ mongoose.connect()
рд░рд┐рдЯрд░реНрди рдЕрд╕реНрд╡реАрдХреГрдд рд╡рд╛рджрд╛ рдЖрд╡реЗрджрди 0 рдХреЛрдб рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдХрдВрд╕реЛрд▓ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рднреА рдЖрдЙрдЯрдкреБрдЯ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рддреЛ рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдХрд┐ рд╡рд╛рджрд╛ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП mongoose.connect()
рдХрд╣рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рд╣реЛред рд╢рд╛рдпрдж exec()
рдЬреИрд╕рд╛ рдХреБрдЫ:
mongoose.connect('mongodb://127.0.0.2/test').exec()
.then(() => { // if all is ok we will be here
return server.start();
})
.catch(err => { // if error we will be here
console.error('App starting error:', err.stack);
process.exit(1);
});
mongoose.connect('mongodb://localhost/dbCollection', function(err, db) {
if (err) {
console.log('Unable to connect to the server. Please start the server. Error:', err);
} else {
console.log('Connected to Server successfully!');
}
});
@nasr18 рдЖрдкрдХрд╛ рдХреНрдпрд╛ рдорддрд▓рдм рдерд╛? :рд╕реНрдорд╛рдЗрд▓реА: рдореИрдВ рдХреЙрд▓рдмреИрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛)
@ рдЬреЛрдХрд░реЛ рд╕реЙрд░реА рдпрд╛рд░ ......... рдЖрдкрдХреЗ рдкреНрд░рд╢реНрди рдХреЛ рдЧрд▓рдд рд╕рдордЭрд╛ред :)
рдХрдиреЗрдХреНрд╢рди рдХреЗ рджреМрд░рд╛рди рдХрд┐рд╕реА рднреА рддреНрд░реБрдЯрд┐ рдХреЛ рдкрдХрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП mongoose.connect рдХреЗ рдХреЙрд▓рдмреИрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
рдУрдкрди рдЗрд╡реЗрдВрдЯ рдореЗрдВ рдЖрдк рдЕрдкрдирд╛ рд╕рд░реНрд╡рд░ рд╕реНрдЯрд╛рд░реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
mongoose.connection.once('open', function() {
logger.info('MongoDB event open');
logger.debug('MongoDB connected [%s]', url);
mongoose.connection.on('connected', function() {
logger.info('MongoDB event connected');
});
mongoose.connection.on('disconnected', function() {
logger.warn('MongoDB event disconnected');
});
mongoose.connection.on('reconnected', function() {
logger.info('MongoDB event reconnected');
});
mongoose.connection.on('error', function(err) {
logger.error('MongoDB event error: ' + err);
});
// return resolve();
return server.start();
});
return mongoose.connect(url, options, function(err) {
if (err) {
logger.error('MongoDB connection error: ' + err);
// return reject(err);
process.exit(1);
}
});
@mathieug рдореБрдЭреЗ рдкрддрд╛ рд╣реИ, рдореИрдВ рддреНрд░реБрдЯрд┐ рдкреНрд░рдмрдВрдзрди рдХреЗ рд▓рд┐рдП рдХреЙрд▓рдмреИрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рд▓реЗрдХрд┐рди рд╕рдорд╕реНрдпрд╛ рд╡рд╛рджреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ: рд╕реНрдорд╛рдЗрд▓реА:
mongoose.connect рдХреЗ рд╡рд╛рджреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░реЗрдВ, рдЬрдм рдХрдиреЗрдХреНрд╢рди рдкрд╣рд▓реА рдмрд╛рд░ рдЦреБрд▓рд╛ рд╣реЛ рддреЛ рдЕрдкрдирд╛ рд╕рд░реНрд╡рд░ рдкреНрд░рд╛рд░рдВрдн рдХрд░реЗрдВ (.once('open'))
рдХреНрдпреЛрдВ? рдЬрд░рд╛ рднреА рдлрд░реНрдХ рдирд╣реАрдВред рдЬрдм рдХрдиреЗрдХреНрд╢рди рдЦреЛрд▓рд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ mongoose.connect
рдХреЙрд▓рдмреИрдХ рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рд╕рд╛рде рд╣реА рд▓реМрдЯрд╛ рд╣реБрдЖ рд╡рд╛рджрд╛ рдкреВрд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ open
рдИрд╡реЗрдВрдЯ рдЙрддреНрд╕рд░реНрдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рддреЛ рдЖрдк рдЬреЛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЙрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
рд╣рд╛рдВ рд▓реЗрдХрд┐рди рдЬреИрд╕рд╛ рдЖрдкрдиреЗ рдХрд╣рд╛, рддреНрд░реБрдЯрд┐ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ mongoose.connect рдХреЛ рдХреЙрд▓рдмреИрдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдпрд╣ рдореБрджреНрджрд╛ рдмрдирд╛рдпрд╛ рд╣реИ: рд╕реНрдорд╛рдЗрд▓реА:
рдореЗрд░реЗ рд╕рд╛рде рднреА рд╡рд╣реА рджрд┐рдХреНрдХрдд рд╣реИред
рдореИрдВ mongoose.connect(...).catch(failCallback)
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рд▓реЗрдХрд┐рди рдЬрдм рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдХрдиреЗрдХреНрд╢рди рдкреНрд░рдпрд╛рд╕ рдореЗрдВ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рд╣реЛрддреА рд╣реИ рддреЛ failCallback
рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред MongooseThenable
рдЫрджреНрдо-рд╡рд╛рджреЗ рдореЗрдВ рдХреБрдЫ рдЧрдбрд╝рдмрдбрд╝ рд╣реИ рдЬреЛ mongoose.connect
рд▓реМрдЯрд╛рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдореИрдВрдиреЗ mongoose.Promise = require('bluebird')
рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрд╕рд┐рдВрдХ рдХреЙрд▓реНрд╕ рдХреЛ _real_ рд╡рд╛рджрд╛ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреА рдЙрдореНрдореАрдж рдХрд░рддрд╛ рд╣реВрдВ, рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдПрдХ рдмреНрд▓реВрдмрд░реНрдбред
рдореЗрд░реЗ failCallback
рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдирд╣реАрдВ рд╣реЛ рд░рд╣реА рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдХреЗрд╡рд▓ рд╢реБрд░реБрдЖрдд рдореЗрдВ рд╣реЛрддрд╛ рд╣реИ, рдпрд╛рдиреА:
// First kill mongod instance so that Mongoose cannot connect and start the app
mongoose.connect(uri, options).catch(failCallback); // failCallback does _not_ get called
// Then stop the app, start mongod instance so that Mongoose can connect, start the app
mongoose.connect(uri, options).then(successCallback); // successCallback gets called
// Then kill mongod instance so that Mongoose disconnects (while the app is running)
mongoose.connection.on('disconnected', function () {
setTimeout(function () {
mongoose.connect(uri, options).catch(reconnectFailCallback); // now reconnectFailCallback _does_ get called
}, randomDelayOfAboutASecond);
});
рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣ рдЙрд╕ рддрд░рд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ (рдЬреЛ рдмреЗрддреБрдХрд╛ рд╣реИ):
// First kill mongod instance so that Mongoose cannot connect and start the app
var dummyNoopCallback = function () {};
mongoose.connect(uri, options, dummyNoopCallback).catch(failCallback); // failCallback _does_ get called
рдРрд╕рд╛ рдХреНрдпреЛрдВ рд╣реИ?
рдкреБрди: рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╡рд╛рджрд╛ рд▓реМрдЯрд╛ рд░рд╣рд╛ рд╣реИ, рдпрд╣ рдкрд┐рдЫрдбрд╝рд╛ рд╕рдВрдЧрддрддрд╛ рдХреЗ рд▓рд┐рдП рд╣реИред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рд▓реЛрдЧ рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ .connect()
рдЪреЗрдирд┐рдВрдЧ рд╡реНрдпрд╡рд╣рд╛рд░ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ (#3847, #3790, рдЖрджрд┐) рдЗрд╕рд▓рд┐рдП рд╣рдо рдЗрд╕реЗ рдЕрднреА рдХреЗ рд▓рд┐рдП рдЗрд╕ рддрд░рд╣ рд╕реЗ рд░рдЦ рд░рд╣реЗ рд╣реИрдВ :) рдПрдХ рдлрд┐рдХреНрд╕ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рддрд╛рдХрд┐ .catch()
рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдХрдиреЗрдХреНрд╢рди рдкрдХрдбрд╝ рд╕рдХреЗ рдореБрджреНрджреЗред
рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИрдВ! рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рдпреЗ рдкрд░рд┐рд╡рд░реНрддрди рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рддреЛрдбрд╝ рджреЗрдВрдЧреЗ рдЬреЛ рдЙрдореНрдореАрдж рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдХрдиреЗрдХреНрд╢рди рддреНрд░реБрдЯрд┐ рд╣реЛрдиреЗ рдкрд░ рдЖрд╡реЗрджрди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рдПрдЧреА рдФрд░ рдХреЛрдИ рдХреЙрд▓рдмреИрдХ рдФрд░ рд╡рд╛рджрд╛ рд╣реИрдВрдбрд▓рд░ рдирд╣реАрдВ рд╣реИрдВ?
рдЙрджрд╛рд╣рд░рдг:
const mongoose = require('mongoose');
mongoose.Promise = Promise;
mongoose.connect('mongodb://127.0.0.2/test'); // no callback and promise handlers
рдЗрди рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рд╕реЗ рдкрд╣рд▓реЗ
/home/dmitry/example/node_modules/mongodb/lib/server.js:242
process.nextTick(function() { throw err; })
^
Error: connect ECONNREFUSED 127.0.0.2:27017
at Object.exports._errnoException (util.js:870:11)
at exports._exceptionWithHostPort (util.js:893:20)
at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1057:14)
рдЗрди рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рд╕рд╛рде 0 рдХреЛрдб рдХреЗ рд╕рд╛рде рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЧрдИ рд╣реИ
рд╕реБрдЭрд╛рд╡ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдЬрд╛рдВрдЪ рдХрд░реЗрдВрдЧреЗред
рдардВрдбрд╛! рдзрдиреНрдпрд╡рд╛рдж: +1:
+1
рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдЪреЗрдирд┐рдВрдЧ рдореЗрдВ рдПрдХ рдкреВрд░реНрдг рд╡рд╛рджреЗ рдХреЗ рд░реВрдк рдореЗрдВ .connect() рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдкрд╕рдВрдж рдХрд░реЗрдВрдЧреЗред
@CodeJjang рдХреНрдпрд╛ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ? рдпрд╣ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдкрд╣рд▓реЗ рд╣реА рдЬрд╛рд░реА рдХреА рдЬрд╛ рдЪреБрдХреА рд╣реИ
mongoose.connect('mongodb://127.0.0.2/test', function() { /* dummy function */ })
.then(() => {
return server.start();
})
.catch(err => { // mongoose connection error will be handled here
console.error('App starting error:', err.stack);
process.exit(1);
});
рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ :(
рдпрд╣ рджрд┐рдЦрд╛рддрд╛ рд╣реИ
(node:22564) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): MongoError: failed to connect to server [127.0.0.1:27017] on first connect
рд╣рдореНрдо mongoose.connect()
рдореЗрдВ рдХреЙрд▓рдмреИрдХ рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ
рдореБрдЭреЗ рдЕрднреА рдорд┐рд▓рд╛:
UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1):
MongoError: failed to connect to server [localhost:17551] on first connect
рдиреЗрд╡рд▓рд╛ 4.7.6 (рдирд╡реАрдирддрдо рдЕрднреА) рдкрд░ рд╡рд╛рджреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдирд╛, рдЙрд╕ рдЪреЗрддрд╛рд╡рдиреА рд╕реЗ рдмрдЪрдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛?
рдореИрдВ рдЗрд╕реЗ рдПрдХреНрд╕рдкреНрд░реЗрд╕рдЬреЗрдПрд╕ рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдпрджрд┐ рдореИрдВ рдкрдХрдбрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдпрд╣ рдореЗрд░реЗ рддрд░реНрдХ рдХреЛ рдЦрд░рд╛рдм рдХрд░ рджреЗрддрд╛ рд╣реИ рдФрд░ рдЕрдЬреАрдм рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ express-session
рдПрдХ рдореЛрдВрдЧреЛрд╕реНрдЯреЛрд░ рднреА рдмрдирд╛ рд░рд╣рд╛ рд╣реИ ... рдмрд╕ рдЧрдиреНрджрд╛ред
рдХреЛрдб рдирдореВрдирд╛ рдХреГрдкрдпрд╛
рдореЗрд░реЗ рдкрд╛рд╕ @matheo рдЬреИрд╕рд╛ рд╣реА рдореБрджреНрджрд╛ рд╣реИред рдЕрднреА-рдЕрднреА рдЦреЛрд▓рд╛ рдпрд╣ рдЯрд┐рдХрдЯ:
рдмрд╛рдж рдореЗрдВ рдЖрдиреЗ рд╡рд╛рд▓реЗ рдХрд┐рд╕реА рднреА рд╡реНрдпрдХреНрддрд┐ рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдЕрдкреЗрдХреНрд╖рд╛ рдХреЗ рдЕрдиреБрд░реВрдк рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:
mongoose.connect('http://127.0.0.1:27017/test')
.then(() => {
server.start();
})
.catch((err) => {
console.log('Error on start: ' + err.stack);
process.exit(1);
});
рдмрд╛рдж рдореЗрдВ рдЖрдиреЗ рд╡рд╛рд▓реЗ рдХрд┐рд╕реА рднреА рд╡реНрдпрдХреНрддрд┐ рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдЕрдкреЗрдХреНрд╖рд╛ рдХреЗ рдЕрдиреБрд░реВрдк рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:
mongoose.connect('http://127.0.0.1:27017/test') .then(() => { server.start(); }) .catch((err) => { console.log('Error on start: ' + err.stack); process.exit(1); });
рдореИрдВ рднреА рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдБ! рд▓реЗрдХрд┐рди рдЬрдм рдореИрдВ рдореЛрдВрдЧреЛрдбрдм рдХреЛ рд░реЛрдХрддрд╛ рд╣реВрдВ рддреЛ рдЗрд╕ рдХреЛрдб рдХреЛ рдЪрд▓рд╛рдПрдВ, рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИред
// mongoose version 5.4.14
mongoose
.connect(databaseUri, {
promiseLibrary: bluebird,
useNewUrlParser: true,
useFindAndModify: false,
useCreateIndex: true,
// Automatically try to reconnect when it loses connection to MongoDB
autoReconnect: true,
// Never stop trying to reconnect
reconnectTries: Number.MAX_VALUE,
// Reconnect every 500ms
reconnectInterval: 500,
// Maintain up to 10 socket connections. If not connected,
// return errors immediately rather than waiting for reconnect
poolSize: 10,
// Give up initial connection after 10 seconds
connectTimeoutMS: 10000,
})
.catch((err) => {
console.log(err);
process.exit(1);
});
@ nvtuan305 'рдХрд╛рдо рдирд╣реАрдВ рдХрд░рдиреЗ' рд╕реЗ
@vkarpov15 рдореЗрд░рд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рдЫрд╛рдкреА рдЬрд╛рдПрдЧреА
рдкреНрд░рдХреНрд░рд┐рдпрд╛:
catch
рдмреНрд▓реЙрдХ рддрдХ рдирд╣реАрдВ рдкрд╣реБрдВрдЪрд╛ рдЬрд╛рдПрдЧрд╛ред // Never reach to here
console.log(err);
process.exit(1);
@ nvtuan305 рдпрджрд┐ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдХрдиреЗрдХреНрд╢рди рдХрд╛ рд╕рдордп рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдиреЗрд╡рд▓рд╛ connectTimeoutMS
рдмрд╛рдж рдПрдХ рддреНрд░реБрдЯрд┐ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░реЗрдЧрд╛ред рдХреНрдпрд╛ рдЖрдкрдХреЗ рд╕рд╛рде рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ? рдпрджрд┐ рд╣рд╛рдВ, рддреЛ рдореЛрдВрдЧреЛрдбреАрдмреА рдФрд░ рдиреЗрд╡рд▓рд╛ рдХрд╛ рдХреМрди рд╕рд╛ рд╕рдВрд╕реНрдХрд░рдг?
@vkarpov15
connectTimeoutMS
рдмрд╛рдж рдиреЗрд╡рд▓рд╛ рдПрдХ рддреНрд░реБрдЯрд┐ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░реЗрдЧрд╛
рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдиреЗрд╡рд▓рд╛ connectTimeoutMS
рдмрд╛рдж catch
рдмреНрд▓реЙрдХ рдкрд░ рддреНрд░реБрдЯрд┐ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдореИрдВ Mongodb 3.6.5 рдФрд░ рдиреЗрд╡рд▓рд╛ 5.4.14 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдБ
> mongod --version
db version v3.6.5
git version: a20ecd3e3a174162052ff99913bc2ca9a839d618
OpenSSL version: OpenSSL 1.0.2p 14 Aug 2018
allocator: system
modules: none
build environment:
distarch: x86_64
target_arch: x86_64
@ nvtuan305 рд╕рд┐рд░реНрдл рдкреБрд╖реНрдЯрд┐ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдХреНрдпрд╛ рдЖрдк рдПрдХ рд╕реНрдЯреИрдВрдбрдЕрд▓реЛрди рдореЛрдВрдЧреЛрдбрдм рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдпрд╛ рдкреНрд░рддрд┐рдХреГрддрд┐ рд╕реЗрдЯ рд╕реЗ рдЬреБрдбрд╝ рд░рд╣реЗ рд╣реИрдВ?
@ vkarpov15 рдореИрдВ рд╕реНрдЯреИрдВрдбрдЕрд▓реЛрди рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред
@nvtuan305 рдХреМрди рд╕рд╛ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо? рд╕рд╛рде рд╣реА, рдЖрдк рдХреНрдпреЛрдВ рдЙрдореНрдореАрдж рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдиреЗрд╡рд▓рд╛ рд╕реНрдЯреИрдВрдбрдЕрд▓реЛрди рд╕реЗ рдХрдиреЗрдХреНрдЯ рд╣реЛрдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рдПрдЧрд╛ - рдХреНрдпрд╛ mongod
рдЙрджрд╛рд╣рд░рдг рдиреАрдЪреЗ рд╣реИ, рдХреНрдпрд╛ рдХреЛрдИ рдиреЗрдЯрд╡рд░реНрдХ рдХрдиреЗрдХреНрд╢рди рдирд╣реАрдВ рд╣реИ, рдХреБрдЫ рдФрд░?
рдиреАрдЪреЗ рджреА рдЧрдИ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЕрдкреЗрдХреНрд╖рд╛ рдХреЗ рдЕрдиреБрд░реВрдк рдХрд╛рдо рдХрд░рддреА рд╣реИ:
const assert = require('assert');
const mongoose = require('mongoose');
mongoose.set('debug', true);
run().then(() => console.log('done')).catch(error => console.error(error.stack));
async function run() {
console.log(mongoose.version);
const start = Date.now();
const opts = { useNewUrlParser: true, connectTimeoutMS: 1000 };
await mongoose.connect('mongodb://doesntexist.com:27017/test', opts).
catch(error => { console.log(`Caught "${error.message}" after ${Date.now() - start}`); });
}
рдЙрддреНрдкрд╛рджрди
$ node gh-4135.js
5.4.14
Caught "failed to connect to server [doesntexist.com:27017] on first connect [MongoNetworkError: connection 0 to doesntexist.com:27017 timed out]" after 1024
done
$ ^C
рдЕрд░реЗ, рдпрд╣ рдмреБрдирд┐рдпрд╛рджреА рд▓рдЧрддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдХреГрдкрдпрд╛ рдереАрд╕рд┐рд╕ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреА рджреЛрдмрд╛рд░рд╛ рдЬрд╛рдВрдЪ рдХрд░реЗрдВ
рдореИрдВ рдЗрд╕реЗ рд╣рд▓ рдХрд░ рд░рд╣рд╛ рд╣реВрдБ
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдмрд╛рдж рдореЗрдВ рдЖрдиреЗ рд╡рд╛рд▓реЗ рдХрд┐рд╕реА рднреА рд╡реНрдпрдХреНрддрд┐ рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдЕрдкреЗрдХреНрд╖рд╛ рдХреЗ рдЕрдиреБрд░реВрдк рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ: