我想从ElasticSearch的索引中获取一个字段值,并将其与Angular Kendo网格列值进行比较。为此,我正在使用EalsticSearch客户端并传递索引,类型和查询字符串,并从保证我将根据我的要求处理结果。我的实际问题是当我尝试使用编写的函数来获取值时不通过量角器运行。其抛出Node Option错误,需要帮助,我如何使用ES的结果。
我编写了以下函数,并试图从ES获取日期和ID以在量角器脚本中使用,但是我无法:
var client = require('./connectES.js'); --> initializing local ES
var logger = require('./logger.js');
function getFileDate(indexData, typeData, bodyData) {
return new Promise(function (resolve, rejected) {
client.search({
index:indexData,
type:typeData,
body:bodyData
}).then(function(results){
resolve(results);
})
})
}
var indexData = 'index';
var typeData = 'type';
var bodyData = 'query';
getFileDate(indexData, typeData, bodyData).then(function(results){
var data = results.hits.hits;
var values = [];
for(var i = 0;i<data.length;i++){
Object.values(data[i]).forEach(function(value){
if(values.indexOf(value) == -1){
values.push(value);
}
});
}
var sourceData = (values[4]);
var dateValue = Object.values(sourceData);
var Date = dateValue[0];
var Id = dateValue[1];
console.log('Date is: '+Date+' , ID is: '+Id);
});
如何在量角器脚本中使用那些ID和日期阻止?请帮助
答案 0 :(得分:0)
这应该很简单。您只需要resolve(dateValue)
而不是results
。
将您的getFileDate()
函数更改为以下内容:
function getFileDate(indexData, typeData, bodyData) {
return new Promise(function (resolve, rejected) {
client.search({
index: indexData,
type: typeData,
body: bodyData
}).then(function (results) {
var data = results.hits.hits;
var values = [];
for (var i = 0; i < data.length; i++) {
Object.values(data[i]).forEach(function (value) {
if (values.indexOf(value) == -1) {
values.push(value);
}
});
}
var sourceData = (values[4]);
resolve(Object.values(sourceData));
});
});
}
然后在您的测试中:
it('should do something', () => {
var indexData = 'index';
var typeData = 'type';
var bodyData = 'query';
getFileDate(indexData, typeData, bodyData).then((dateValue) => {
expect(dateValue[0]).toEqual(someValue);
expect(dateValue[1]).toEqual(someID);
});
});