如何使用node-es清理非常混乱的回调嵌套?

时间:2016-05-11 18:09:34

标签: node.js elasticsearch

我正在使用node-es,我遇到了我想要做的问题:

我想在2个地方索引文档。对于每个我想检查文档是否存在。如果是,请索引新文档。如果没有,那就不要了。而是发布现有文档的更新。

我的问题是我的代码看起来类似于:

    es.search({
        query : {
          field : {
            animal : 'kitteh'
          }
        }
      }, function (err, data) {
           if(data.hits.length == 0) {
es.index(options, doc, function (err, data) {
  // this will result in a POST with path /bawss/man?refresh=true
});
           }
      });

有没有办法让我更清洁,所以我不必继续筑巢?

1 个答案:

答案 0 :(得分:0)

我不确定这是不是你要找的东西。为您的问题添加更多示例。如果你想要一个更干净的代码,试试这样的事情:

var esSearchParams = {
    query : {
        field : {
            animal : 'kitteh'
        }
    }
}
function checkDocument(es, options, doc) { // this is a closure
    return function(err, data) {
       if(data.hits.length == 0) {
          es.index(options, doc, postResult)
       }
    }
}
function postResult(err, data) {
    // this will result in a POST with path /bawss/man?refresh=true
}
es.search(esSearchParams, checkDocument);