javascript - 将elasticsearch js 与bluebird 结合起来

标签 javascript node.js elasticsearch bluebird

我从node.js开始,bluebird promise 框架。我正在尝试将其与 elasticsearch javascript 驱动程序集成。我设法使用以下代码使其工作。我想知道这是否是开始 promise 的最佳方式。我省略了 then 步骤中调用的函数。

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。

Read more about configuration

关于javascript - 将elasticsearch js 与bluebird 结合起来,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31418360/

相关文章:

javascript - Telerik 嵌套 View

node.js - 为什么ZeroMQ消息会被扰乱?

elasticsearch - Elasticsearch查询关键字值大于X [7.2]的所有文档

javascript - 数据表修改过滤器html

javascript - jQuery - 从输入值计算日期,六个月

javascript - 如何在 JavaScript 中找到 1-999 之间的所有素数?

javascript - 回调 hell ,厄运金字塔,node.js

json - 将 json 文件插入 mongodb 并指定要用作 _id 的键

elasticsearch - 在Liferay 7中禁用ElasticSearch日志

elasticsearch - Kibana 服务器未就绪