2015-11-17 3 views
2

У меня есть следующая функция, которая принимает ключ, значение и обратный вызов в качестве аргументов. Функция была написана с учетом принципов DRY, и целью этой функции является поиск конечной точки Elasticsearch с использованием ключа/значений, которые передаются функции.Использовать аргумент функции как ключ/значение

function foo (key, value, callback) { 
    client.search({ 
     index: 'foo', 
     type: 'bar', 
     body: { 
      query: { 
       term: { 
        key: value 
       } 
      } 
     } 
    } ...) 
} 

Проблема, которую я, кажется, имею что key не получает правильно и вместо того, чтобы интерпретировать в key быть значение аргумента, фактическое значение «ключ» используется в запросе к Elasticsearch.

ответ

3

Вы можете использовать bracket notation

function foo (key, value, callback) { 
 
    var query = { 
 
    index: 'foo', 
 
    type: 'bar', 
 
    body: { 
 
     query: { 
 
     term: { 
 
     } 
 
     } 
 
    } 
 
    }; 
 
    
 
    query.body.query.term[key] = value; 
 

 
    client.search(query); 
 
}

Или, если вы используете ES6, вы можете сделать, как этот

function foo (key, value, callback) { 
 
    client.search({ 
 
    index: 'foo', 
 
    type: 'bar', 
 
    body: { 
 
     query: { 
 
     term: { 
 
      [key]: value 
 
     } 
 
     } 
 
    } 
 
    }); 
 
}