decodeSearch: function()

in lib/protocol/decoder.js [262:303]


    decodeSearch: function (buffers) {
        var response = tsSearchProtos.SearchResponse.decode(buffers);
        var result = {};
        var totalCounts = response.totalHits.toString();
        if (totalCounts != "-1") {
            result.totalCounts = totalCounts;
        }
        result.isAllSucceeded = response.isAllSucceeded;
        result.nextToken = response.nextToken;

        var rows = [];
        TableStore.util.arrayEach(response.rows, function(aRow) {
            var inputStream = new TableStore.PlainBufferInputStream(aRow);
            var codedInputStream = new TableStore.PlainBufferCodedInputStream(inputStream);
            var row = codedInputStream.readRow();
            rows.push(row);
        });
        result.rows = rows;
        if (response.aggs && response.aggs.length > 0) {
            result.aggs = TableStore.decoder._parseAggs(response.aggs);
        }
        if (response.groupBys && response.groupBys.length > 0) {
            result.groupBys = TableStore.decoder._parseGroupBys(response.groupBys);
        }

        result.searchHits = [];
        if(response.rows.length !== response.searchHits.length && response.searchHits.length !== 0) {
            console.log("the row count is not equal to search extra result item count in server response body, ignore the search extra result items.");
        } else {
            for (let i in response.searchHits) {
                result.searchHits.push(TableStore.decoder._parseSearchHit(response.searchHits[i], rows[i]));
            }
        }
        if (response.consumed) {
            result.consumed = response.consumed;
        }
        if (response.reservedConsumed) {
            result.reservedConsumed = response.reservedConsumed;
        }

        return result;
    },