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