我有一个 MySQL 表,其中列名是 tags
,类型是 VARCHAR
。我正在插入以逗号分隔的数据:
tag1, tag2, tag3, tag4, tag5, tag6
我从节点查询是:
app.get('/tagtest', (req, res) => {
var tags = []; // <= Not sure if I need this or how to push tags here.
connection.query("SELECT * FROM tagtestpost", (err, rows)=>{
res.send(rows)
});
});
上述查询的响应是:
[{"id":1,"tags":"tag1, tag2, tag3"},{"id":2,"tags":"tag2, tag4"}]
我想返回数组中的标签。所以 response
应该是这样的:
[{"id":1,"tags":[tag1, tag2, tag3]},{"id":2,"tags":[tag2, tag4]}]
我怎样才能做到这一点?
更新1
app.get('/showtagposts', (req, res) => {
connection.query("SELECT * FROM postwithtagtest", (err, rows)=>{
var a = rows;
const expected = a.map((post) => ({
...post,
tags: post.tags.split(/,\s+/)
}));
console.log(expected);
res.json(expected);
});
});
最佳答案
这不是实现您想要的MySQL方法。我有一个 JS 方法来实现你需要的。
var a = [{"id":1,"tags":"tag1, tag2, tag3"},{"id":2,"tags":"tag2, tag4"}];
var expected =[];
a.forEach( function (eachObj){
var obj = {};
for (var key in eachObj) {
if (eachObj.hasOwnProperty(key) && key ==='tags'){
obj[key] = [eachObj[key]];
}else{
obj[key] = eachObj[key];
}
}
expected.push(obj);
});
console.log(expected);
关于mysql - 将部分结果数据推送到数组中并发送,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46391749/