Express.js, mysql, разделение элементов данных одним атрибутом - PullRequest
0 голосов
/ 14 ноября 2018

У меня есть переменная с именем строка , которая содержит это:

[ 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» на эти переменные, сохраняя их структуру. Пожалуйста, поделитесь решением со мной, спасибо!

1 Ответ

0 голосов
/ 14 ноября 2018

Вы, похоже, рассматриваете массивы и объекты, как если бы они были строками. Вы не можете объединить объект с другим, подобным этому, и ожидать ощутимого результата - он просто приводит в соответствие их, что бесполезно.

Вот что, я думаю, вы намеревались - иметь два пустых массива, а затем помещать элементы из ответа в один или другой из этих массивов в зависимости от состояния элемента 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.S. Я не знаю, является ли то, что вы намереваетесь отправить методу «рендеринга», фактическими данными в каждом массиве или просто подсчетом того, сколько элементов было в каждой категории? Если вы просто хотите вести подсчет, вы можете обойтись без массивов и просто сделать это:

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 });
    })
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...