将elasticsearch js与bluebird结合起来

时间:2015-07-14 22:16:02

标签: javascript node.js elasticsearch bluebird

我开始使用 node.js bluebird 承诺框架。我正在尝试将其与 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);
    });

1 个答案:

答案 0 :(得分:1)

您可以覆盖内部使用的延迟对象,如:

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。

Read more about configuration