承诺在处理完MySQL结果的所有行后执行某些操作

时间:2016-09-09 14:50:14

标签: mysql node.js

提前致谢。在处理MySQL结果的所有行之后,我正在尝试做某事。我尝试过Promises,但它没有用。 Theres 4600行但我刚刚收到[]。我猜我的问题是NodeJS Async。 这是我的代码:

let paradasRelations = db.query('SELECT * FROM ParadasRelations');

    let paradaPromise = new Promise(function (resolve, reject) {
        let paradasData = [];
        paradasRelations.on('result', function (row) {
            paradasData.push(row);
        });
        resolve(paradasData);
    });
    paradaPromise.then(function (paradasData) {
        console.log(paradasData);
    });

1 个答案:

答案 0 :(得分:1)

只有在返回所有行并且您收到Promise事件后,才需要解析end。这是未经测试的,但这样的事情应该有效:

let paradasRelations = db.query('SELECT * FROM ParadasRelations');

let paradaPromise = new Promise(function (resolve, reject) {
    let paradasData = [];
    paradasRelations.on('result', function (row) {
        paradasData.push(row);
    });

    paradasRelations.on('end', function () {
        resolve(paradasData);
    });
});

paradaPromise.then(function (paradasData) {
    console.log(paradasData);
});