将elasticsearch js和bluebird结合起来

我开始使用蓝鸟承诺框架node.js。 我正在尝试将其与elasticsearch javascript驱动程序集成。 我设法使用下面的代码工作。 我想知道这是否是启动承诺的最佳方式。 我省略了在后续步骤中调用的函数。

var esPromise = client.search({ index: "myindex", searchType: "count", body: { aggs: { allIp: { terms: { field: "ip", size: 1000, order: { _term: "asc" } } } } } }); new Promise(function (resolve, reject) { esPromise.then(resolve, reject); }) .then(extract_ips_from_aggs) .then(sort_ips) .then(log_ips) .catch(function (error) { console.log(error); }); 

您可以重写内部使用的延迟对象,如:

 var Bluebird = require('bluebird'); var client = new elasticsearch.Client({ defer: function () { // for older Bluebird // return Bluebird.defer(); var resolve, reject; var promise = new PromiseImpl(function() { resolve = arguments[0]; reject = arguments[1]; }); return { resolve: resolve, reject: reject, promise: promise }; } }); 

默认情况下,文档声明它使用ES6 Promise。

阅读更多关于configuration