express.js,mysql,用一个属性分隔数据项

lnlaulya  于 2021-06-18  发布在  Mysql
关注(0)|答案(1)|浏览(378)

我有一个名为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”正确地分割成这些变量,同时保持它们的结构。请与我分享解决方案,谢谢!

bnlyeluc

bnlyeluc1#

您似乎将数组和对象视为字符串。你不能像那样将一个对象连接到另一个对象并期望得到合理的输出——它只是将它们字符串化,这是无用的。
我认为您的意图是这样的—使用两个空数组,然后根据项目的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 });
    })
});

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

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 });
    })
});

相关问题