2017-05-19 45 views
1

我有这样的查询:帆:转换领域的SQL查询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}); 
    }); 

其返回结果是这样的:

{ 
    "data": [ 
    { 
     "field1": "[\"element 1\", \"element 1\"]", 
     ... 
    } 
    ] 
} 

你可以看到,“[\” 元素1 \“,\”元素1 \“]”是字符串,我不喜欢那样。我希望他们博json。所以结果应该是这样的:

{ 
    "data": [ 
    { 
     "field1": [\"element 1\", \"element 1\"], 
     ... 
    } 
    ] 
} 

我怎么能做到这一点?

+0

有人帮我请 – Tuan

+0

使用'JSON.parse'上'每个元素的field1'。 – Sangharsh

回答

1

如果您的查询代表类似many-to-many关系,您可以看看.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);