帆:将 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);