mysql - 将部分结果数据推送到数组中并发送

标签 mysql node-mysql

我有一个 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/

相关文章:

mysql - 从 INT 列中获取一个条目作为字符串?

javascript - 使用 sinon mocks、mysql 和 bluebird Promise 设置 Mocha 测试

javascript - 无法通过 SSH 连接到 MySQL

mysql - JOIN 语句显示所有已分配积分的用户 - 有没有办法也包括未分配任何积分的用户?

mysql - 握手过程中通讯失败。是否有服务器在本地主机 :3306? 上运行

mysql - SQL 获取、编辑和更新数据

mysql - 如何设计和处理mysql中的大表?

javascript - 如何停止在 node-mysql 中编写嵌套代码(node.js、express、mysql)

javascript - 将node-mysql结果行合并为node.js的单个JSON返回

php - 如果数据库记录中包含空值,如何将空值设置为数据字段?