将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