如何在compoundjs初始化期间从jugglingdb适配器获取本地mongodb客户端?
我正在使用compoundjs和使用jugglingdb的mongodb适配器。 我一直在检索和重用控制器中的本地mongodb客户端 ,通过执行以下操作:
var db = compound.orm._schemas[0].client;
这很好,因为我可以使用mongodb支持的函数,比如.collection(name)
和.find()
。 但是,当我为compoundjs创build初始化程序时, .client
为空,但看起来像_schemas[0]
不是。 例如:
module.exports = function (compound) { var db = compound.orm._schemas[0].client; // _schemas[0] isn't empty as .client was reached. db.collection('collection'); // Throws: TypeError: Cannot call method 'collection' of undefined };
如何从jugglingdb适配器中检索本地mongodb客户端,而无需自己重新创build连接?
这可以通过使用来自JugglingDB事件发射器的connected
事件来完成。
module.exports = function (compound) { compound.orm._schemas[0].once('connected', function () { var db = compound.orm._schemas[0].client; db.collection('Module'); }); };
说明:
当JugglingDB加载一个适配器时,它会传入一个完成的callback, 触发连接的事件 。 加载mongo适配器时,适配器使用asynchronous调用来连接到数据库,这可能导致初始化器在适配器完全连接之前运行。