帆:将 sql 查询中的字段转换为 json
sails: convert field in sql query to json
我有这样的查询:
var sql = "select * from a left join b where a.id in (select field from c)";
Model.query(sql, function (err, result) {
return res.json({data:result});
});
return 结果是这样的:
{
"data": [
{
"field1": "[\"element 1\", \"element 1\"]",
...
}
]
}
你可以看到 "[\"element 1\", \"element 1\"]" 是字符串,我不喜欢那样。我希望他们博 json。所以结果应该是这样的:
{
"data": [
{
"field1": [\"element 1\", \"element 1\"],
...
}
]
}
我怎样才能做到这一点?
如果您的查询表示类似 many-to-many relation, you could have a look at the .populate() 函数的内容。
否则你可以这样做:
var data = [{
"field1": "[\"element 1\", \"element 2\"]",
"field2": "[\"element 1\", \"element 2\"]",
}];
var parsedData = [];
data.forEach(function(item, index) {
var parsed = {};
for (var fieldName in item) {
try {
parsed[fieldName] = JSON.parse(item[fieldName]);
} catch (e) {
parsed[fieldName] = [];
}
}
parsedData.push(parsed);
});
console.log(parsedData);
我有这样的查询:
var sql = "select * from a left join b where a.id in (select field from c)";
Model.query(sql, function (err, result) {
return res.json({data:result});
});
return 结果是这样的:
{
"data": [
{
"field1": "[\"element 1\", \"element 1\"]",
...
}
]
}
你可以看到 "[\"element 1\", \"element 1\"]" 是字符串,我不喜欢那样。我希望他们博 json。所以结果应该是这样的:
{
"data": [
{
"field1": [\"element 1\", \"element 1\"],
...
}
]
}
我怎样才能做到这一点?
如果您的查询表示类似 many-to-many relation, you could have a look at the .populate() 函数的内容。
否则你可以这样做:
var data = [{
"field1": "[\"element 1\", \"element 2\"]",
"field2": "[\"element 1\", \"element 2\"]",
}];
var parsedData = [];
data.forEach(function(item, index) {
var parsed = {};
for (var fieldName in item) {
try {
parsed[fieldName] = JSON.parse(item[fieldName]);
} catch (e) {
parsed[fieldName] = [];
}
}
parsedData.push(parsed);
});
console.log(parsedData);