是否有适当的方式来宣传arangojs?

时间:2015-04-10 09:09:42

标签: javascript promise bluebird arangodb

我想在我的项目中使用arangojs 3.4.2。从3.0开始,驱动程序没有使用承诺。 在尝试了几个libs来宣传驱动程序之后我没有成功(bluebird,promisify-node ...):每次驱动程序返回一个实例未实现的新实例时,我必须再次宣传新实例以与promises一起使用:

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
    */
})

有没有办法实现这个目标?

2 个答案:

答案 0 :(得分:1)

这是正确的。

如果你想宣传驱动程序中所有对象的所有方法,你需要宣传原型'方法直接:

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');
  });
});

答案 1 :(得分:0)

  

从版本3.5开始,如果在调用异步函数时定义了全局Promise构造函数,该函数也将返回一个promise。

https://github.com/arangodb/arangojs