2017-05-19 95 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);