Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var self = this;
- var searchTerm = this.searchTerm;
- return self.getElasticData(searchTerm)
- .then(function(elasticData) {
- var createObjectTasks = [];
- _.each(elasticData.hits.hits, function(elasticDataItem) {
- var bodySource = elasticDataItem._source;
- var elasticDatabaseId = elasticDataItem._id;
- var elasticBody = bodySource.body;
- var highlightTextFirstPosition = elasticDataItem.highlight.body[0];
- var highlightTextArray = elasticDataItem.highlight.body;
- var foundQtyInHighlight = highlightTextArray.length;
- var searchNotFoundDescription = "Неизвестный источник";
- var getDescriptionAsyncResult;
- if(bodySource.targetId){
- var loadID = bodySource.targetId instanceof Array ? bodySource.targetId[0] : bodySource.targetId;
- getDescriptionAsyncResult = self.factory.load(loadID)
- .then(function(targetObject) {
- // here you can use the result of promiseB
- if (targetObject) {
- return targetObject.description;
- }
- else return searchNotFoundDescription;
- })
- .catch(function() {
- return Promise.resolve(searchNotFoundDescription)
- })
- }
- else if (bodySource.filePath){
- getDescriptionAsyncResult = Promise.resolve(bodySource.filePath)
- }
- //_.each(highlightTextArray,
- //function(highlightText){
- function(highlightTextFirstPosition){
- createObjectTasks.push(
- getDescriptionAsyncResult
- .then(function(foundDescription) {
- return self.factory.newObject('system-elastic-search-item', {
- //bodyData: highlightText[0],
- bodyData: highlightTextFirstPosition,
- parentDocId: bodySource.targetId,
- resultDescription: foundDescription,
- elasticId: elasticDatabaseId,
- foundQtyInHighlight: foundQtyInHighlight,
- //возможно не надо тащить текст, а тянуть его для конкретного ID из эластик
- rawDataText: elasticBody
- })
- .then(function (eli) {
- // if(eli.setReadOnly)
- // eli.setReadOnly(true);
- return Promise.resolve(eli);
- });
- })
- );
- };
- //);
- });
- return Promise.all(createObjectTasks)
- .then(function(elasticDataAsElasticItems) {
- var begin = params.filter.offset;
- var end = (params.filter.offset + params.filter.limit);
- //var end = params.filter.limit;
- elasticDataAsElasticItems = elasticDataAsElasticItems.slice(begin, end);
- return Promise.resolve({
- rows:elasticDataAsElasticItems,
- total: createObjectTasks.length
- });
- });
- });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement