Я изо всех сил пытаюсь экспортировать доступные базы данных Mongo в ./routes/index.js.Узел Js: Экспорт доступных имен базы данных Mongo не работает
Связанные часть app.js:
var ACCESSIBLE_DATABASES = [];
var Db = require('mongodb').Db,
MongoClient = require('mongodb').MongoClient,
Server = require('mongodb').Server,
assert = require('assert');
var db = new Db('test', new Server('localhost', 27017));
db.open(function(err, db) {
var existing_databases = [];
var adminDb = db.admin();
// List all the available databases
adminDb.listDatabases(function(err, dbs) {
assert.equal(null, err);
assert.ok(dbs.databases.length > 0);
ACCESSIBLE_DATABASES = dbs.databases;
db.close();
});
});
// Code below export empty array
module.exports.accessible_databases = ACCESSIBLE_DATABASES;
// After some milisec the array has already contain the databases
setTimeout(function() {
console.log(ACCESSIBLE_DATABASES);
}, 100);
Я хотел бы избежать повторения кода в моем index.js файле, но я не мог достичь ее. Импорт не может работать ни внутри функции adminDb.listDatabases, ни позже в функции setTimeout. (Я хотел бы использовать результат позже в app.js файла так миграцию коды в index.js файл не вариант.
Я предлагаю причиной этого является асинхронным выполнением кода.
Что такое «const dbs = require ('./ dbs»); означает? Я хотел бы запросить существующие dbs при запуске и настроить соединения, т. Е. Var monk = require ('monk'); var TEST_DB1 = monk ('localhost: 27017/TEST_DB1'); а также я хотел бы экспортировать его, чтобы избежать повторений кода. – Angelo
@Angelo проверить мое обновление –
code-jaff: Вы частично поняли мою проблему. Я хотел бы запросить существующие базы данных в самом файле app.js, чтобы установить подключения к ним и сделать их доступными для клиентских запросов, а рядом с ним я также хотел бы импортировать доступные dbs в файл index.js, где запросы определены для клиентской стороны, чтобы избежать избыточности кода. Я также могу сделать это в файле приложения, это не имеет значения, но из-за асинхронного режима построения соединений не происходит. – Angelo