我想在我的项目中使用arangojs 3.4.2。从3.0开始,驱动程序就没有使用任何承诺。在尝试了几个lib来对驱动程序进行编程之后,我没有成功(bluebird,promisify -node.):每次驱动程序返回一个新实例时,这个实例没有被验证,我必须再次对新实例进行promisify处理,以便与承诺一起使用:
var Promise=require('bluebird');
var arango=require('arangojs');
db=Promise.promisifyAll(new arango("http://localhost:8529"));
/*db is promisified properly*/
testdb=db.databaseAsync('test').then(function(testInstance){
/*
the testInstance returned by the driver is not promisified
to use it with promises i've to promisify again
*/
})有办法做到这一点吗?
发布于 2015-04-14 17:31:51
这是正确的。
如果要对驱动程序中所有对象的所有方法进行promisify,则需要直接对原型的方法进行promisify:
var Database = require('arangojs/lib/Database');
Promise.promisifyAll(Database.prototype);
var db = new Database('http://localhost:8529');
db.databasesAsync().then(function (databases) {
databases.forEach(function (database) {
assertTrue(typeof database.databaseAsync === 'function');
});
});https://stackoverflow.com/questions/29557522
复制相似问题