Вы можете создать модуль 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()
всегда вернет тот же самый экземпляр.
Примечание, код не проверен.
Я думаю, что лучшим вариантом является использование методов обратного вызова в течение жизненного цикла вашей деятельности. Время начала - onCreate () первого действия, которое вы показываете своему пользователю. Время окончания может быть немного сложнее. Прежде всего, если у вас есть несколько действий, пользователь может выйти из любого из них, поэтому вам нужно отслеживать текущее открытое действие и отправлять время окончания, только если следующее действие не появляется. Вторая проблема в том, какой метод обратного вызова следует использовать? onPause () не гарантированно вызывается, а onDestroy () не будет вызываться до тех пор, пока приложение не будет очищено от последних. Таким образом, вероятнее всего, onStop () - правильное место.
Или вы можете использовать обратные вызовы вашего приложения . Просто унаследуйте класс Application и используйте его обратные вызовы для отслеживания времени.