Javascript date.setSeconds работает должным образом в отладчике, но не в сценарии

Вы можете создать модуль 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() всегда вернет тот же самый экземпляр.

Примечание, код не проверен.

4
задан rory 16 January 2019 в 15:51
поделиться

2 ответа

Используйте этот код, но убедитесь, что продолжительность указана в миллисекундах, поэтому, если вы хотите добавить 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=/`;
}

0
ответ дан N.Tasikj 16 January 2019 в 15:51
поделиться

Ясно, что setSeconds() относится к текущему времени. Вы можете использовать alert(), чтобы увидеть еще большие различия. Однако следующее будет работать так, как вы ожидаете: Заменить:

date.setSeconds(date.getSeconds() + duration);

на:

    date.setHours(date.getHours(), date.getMinutes(), date.getSeconds()+ duration, 0);

Обратите внимание, что я обнуляю миллисекунды, вы можете обрабатывать их как хотите. см. рабочий пример jsfiddle

0
ответ дан Mulli 16 January 2019 в 15:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: