如何将 Slate 查询的 return 格式从列更改为行?
How do I change the return format of Slate queries from column to row?
我的查询结果如下:
{
col1: [values],
col2: [values]
}
有没有办法让我的查询 return 作为行对象列表?
最好的方法是编写一个函数来转换您的查询响应。
一个例子:
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 中的 table 小部件)。这是可以做到的:
var original_fmt = {};
_.forEach(_.keys(newdata[0]), function(k) {
original_fmt[k] = _.map(newdata, k);
});
// use original_fmt
我的查询结果如下:
{
col1: [values],
col2: [values]
}
有没有办法让我的查询 return 作为行对象列表?
最好的方法是编写一个函数来转换您的查询响应。
一个例子:
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 中的 table 小部件)。这是可以做到的:
var original_fmt = {};
_.forEach(_.keys(newdata[0]), function(k) {
original_fmt[k] = _.map(newdata, k);
});
// use original_fmt