Как изменить формат возврата запросов Slate из столбца в строку?

Результаты моего запроса выглядят так:

{
  col1: [values],
  col2: [values]
}

Есть ли способ вернуть мой запрос в виде списка объектов строк?


person Andrew St P    schedule 22.09.2020    source источник


Ответы (1)


Лучший способ — написать функцию для преобразования ответа на запрос.

Один пример:

function transformColumnSchemaToRowSchema(data) {
    var keys   = _.keys(data);
    var arrays = _.values(data);
    
    
    var arrayOfPropertyLists = _.zip.apply(_, arrays);
    
    
    var arrayOfObjects = _.map(arrayOfPropertyLists, function(list) {
    var obj = {};
    
    
    _.each(keys, function(key, i) {
    obj[key] = list[i];
    });
    
    
    return obj;
    });
    
    
    return arrayOfObjects;
}

Или более компактный вариант:

var data = {{q_some_query}};
delete data['_response']
var newdata = _.zip.apply(_, _.values(data)).map((val) => _.zipObject(_.keys(data), val));

После преобразования в этот формат может потребоваться обратное преобразование в исходный формат (например, если вы хотите поместить данные в виджет таблицы в Slate). Вот как это можно сделать:

var original_fmt = {};
_.forEach(_.keys(newdata[0]), function(k) {
original_fmt[k] = _.map(newdata, k);
});
// use original_fmt
person Adil B    schedule 22.09.2020