Вы можете создать модуль mongoUtil.js
, который имеет функции как для подключения к mongo, так и для возврата экземпляра mongo db:
var MongoClient = require( 'mongodb' ).MongoClient;
var _db;
module.exports = {
connectToServer: function( callback ) {
MongoClient.connect( "mongodb://localhost:27017/marankings", function( err, db ) {
_db = db;
return callback( err );
} );
},
getDb: function() {
return _db;
}
};
Чтобы использовать его, вы сделаете это в своем app.js
:
var mongoUtil = require( 'mongoUtil' );
mongoUtil.connectToServer( function( err ) {
// start the rest of your app here
} );
И тогда, когда вам нужен доступ к mongo где-нибудь, вы можете сделать это:
var mongoUtil = require( 'mongoUtil' );
var db = mongoUtil.getDb();
db.collection( 'users' ).find();
Причина этого в том, что в узле, когда модули require
'd, они только загружаются / получаются один раз, так что вы только когда-нибудь закончите с одним экземпляром _db
, а mongoUtil.getDb()
всегда вернет тот же самый экземпляр.
Примечание, код не проверен.
Используйте этот код, но убедитесь, что продолжительность указана в миллисекундах, поэтому, если вы хотите добавить 2 секунды, вам нужно передать 2000, или, если вы передаете секунды, просто добавьте в код длительность * 1000.
function createCookieWithDuration(name, value, duration) {
const date = new Date();
console.log(`date now: ${date}`);
const newDate = new Date(date.getTime() + duration);
console.log(`adjusted date by ${duration}: ${newDate}`);
document.cookie = `${name}=${value}; expires=${newDate}; path=/`;
}
Ясно, что setSeconds()
относится к текущему времени. Вы можете использовать alert()
, чтобы увидеть еще большие различия. Однако следующее будет работать так, как вы ожидаете: Заменить:
date.setSeconds(date.getSeconds() + duration);
на:
date.setHours(date.getHours(), date.getMinutes(), date.getSeconds()+ duration, 0);
Обратите внимание, что я обнуляю миллисекунды, вы можете обрабатывать их как хотите. см. рабочий пример jsfiddle