利用可能なMongoデータベースを./routes/index.jsにエクスポートするのに苦労しています。 app.jsのノードJs:利用可能なMongoデータベース名をエクスポートできません
関連部品:
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'関数でも機能しません。 (私はそうindex.jsファイルにコードを移行することはオプションではありません、後でapp.jsファイルに結果を使用するようにしたいのです。
を私はそれの理由は、非同期コードの実行であることを示唆している。
「const dbs = require( './ dbs');」とは何ですか?を意味する?私は起動時に既存のDBに照会して接続を設定したいと思います。var monk = require( 'monk'); var TEST_DB1 = monk( 'localhost:27017/TEST_DB1');コードの繰り返しを避けるためにエクスポートしたいと思います。 – Angelo
@Angelo私の更新を確認してください –
code-jaff:あなたは私の問題を部分的に理解していました。私はapp.jsファイル自体の既存のデータベースにクエリを行い、それらへの接続を確立し、それらをクライアント要求に利用できるようにしたいと思います。また、index.jsファイルにアクセス可能なdbsをインポートすることもできますコードの冗長性を避けるためにクライアント側で定義されています。私はアプリファイルでもそれを作ることができますが、それは問題ではありませんが、非同期モードの構築のために接続は起こっていませんでした。 – Angelo