javascript - Express.js、mysql、通过一个属性分隔数据项

标签 javascript mysql arrays express javascript-objects

我有一个名为 row 的变量,其中包含以下内容:

[ RowDataPacket {
    id: 15,
    worknumber: '543/242',
    note: '',
    timestamp: 2018-12-18T12:17:15.000Z,
    uploadroute: null,
    isDone: 'false' },
  RowDataPacket {
    id: 16,
    worknumber: '123/123',
    note: 'retek',
    timestamp: 2018-12-18T12:17:15.000Z,
    uploadroute: null,
    isDone: 'false' },
  RowDataPacket {
    id: 17,
    worknumber: '5/34',
    note: 'anal',
    timestamp: 2018-12-18T12:17:15.000Z,
    uploadroute: null,
    isDone: 'false' } ]

我想根据这个“isDone”属性将此内容分成两个其他变量。 这是我调用的电话的代码:

router.get('/', function (req, res) {
    var totalTrue;
    var totalFalse;
    connection.query("SELECT * FROM tickets", function (err, row, field) {
        for (i = 0; i < row.length; i++) {
            if (row[i].isDone == "false") {
                totalFalse += row[i];
                console.log(totalFalse);
            } else {
                totalTrue += row[i];
            }
        }
        res.render('list', { title: 'List', layout: 'listLayout', trueRow: totalTrue, falseRow: totalFalse });
    })
});

出于某种原因,“totalFalse”变量将在调用后包含以下内容:

undefined[object Object][object Object][object Object]

我不知道如何在保持其结构的同时将“RowDataPocket”正确地分离到这些变量中。请与我分享解决方案,谢谢!

最佳答案

您似乎将数组和对象视为字符串。您不能像这样将一个对象连接到另一个对象并期望得到合理的输出 - 它只是将它们字符串化,这是无用的。

这就是我认为您想要的 - 有两个空数组,然后根据项目的 isDone 状态将响应中的项目推送到这些数组之一或另一个中:

router.get('/', function (req, res) {
    var totalTrue = []; //defined as an array
    var totalFalse = []; //defined as an array
    connection.query("SELECT * FROM tickets", function (err, row, field) {
        for (i = 0; i < row.length; i++) {
            if (row[i].isDone == "false") {
                totalFalse.push(row[i]); //add a new item to the array
                console.log(totalFalse);
            } else {
                totalTrue.push(row[i]); //add a new item to the array
            }
        }
        res.render('list', { title: 'List', layout: 'listLayout', trueRow: totalTrue, falseRow: totalFalse });
    })
});
<小时/>

附注我不知道您打算发送给“渲染”方法的是每个数组中的实际数据本身,还是只是每个类别中有多少项目的计数?如果您只想保留计数,那么您可以省去数组,只需执行以下操作:

router.get('/', function (req, res) {
    var totalTrue = 0; //counter
    var totalFalse = 0; //defined as an array
    connection.query("SELECT * FROM tickets", function (err, row, field) {
        for (i = 0; i < row.length; i++) {
            if (row[i].isDone == "false") {
                totalFalse++; //increase the count
                console.log(totalFalse);
            } else {
                totalTrue++; //increase the count
            }
        }
        res.render('list', { title: 'List', layout: 'listLayout', trueRow: totalTrue, falseRow: totalFalse });
    })
});

关于javascript - Express.js、mysql、通过一个属性分隔数据项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53299879/

相关文章:

javascript - 在除一种形式之外的所有形式上使用 jqtransform 插件

javascript - 对象 'window' 如何绑定(bind) addEventListener()?

mySQL 的 PHP 结果不显示输入值内的引号

php - MySQL 查询 - 间隔求和

java - 递归确定是否存在与给定 int 参数匹配的正 int 数组的子集和?

javascript - 如何通过添加新的指定选项来创建依赖的JS下拉列表?

javascript - 咕噜声 : Location URL app with period

php - 检查元素的数量是否等于特定数量 PHP

java - 在 Android studio 日志中等待阻塞 GC Alloc

javascript - 需要从纯色切换到多色的脚本 - 如果可能的话?