node.js 嵌套查询的数据json.stringify后丢失数据?

新手上路,请多包涵

数据库查询

function query(sql) {
    return new promise((resolve, reject) => {
        pool.getConnection(function (err, conn) {
            if (err) {
                reject(err);
            } else {
                conn.query(sql, function (err, rows, cols) {
                    if (err) {
                        conn.release();
                        reject(err)
                    } else {
                        //释放连接
                        conn.release();
                        //事件驱动回调
                        resolve({ rows: rows, cols: cols });
                    }
                });
            }
        });
    });
};
exports.myTickets = (userId, cb) => {
    let sql = util.format('select ticketId,number from ticket_Numbers where userId="%s"', userId);
    db.query(sql)
        .then((data) => {
            let tickets = data.rows;
            tickets.map(ticket => {
                db.query(util.format('select userId,number from ticket_numbers where ticketId="%s"', ticket.ticketId))
                    .then((players) => {
                        ticket.players = players.rows;
                    });
            })
            console.log(tickets);    //这里log出来有players
            console.log(JSON.stringify(tickets));    //stringify之后 players丢失
            cb({ success: true, tickets: tickets });
        })
        .catch(err => {
            console.log(err.stack);
            cb({ success: false, message: err.message });
        });
}

结果:
图片描述

node新手,请教为什么会这样,哪里写错了?

阅读 2.5k
1 个回答
✓ 已被采纳新手上路,请多包涵
let getTickets = (userId) => {
    let sql = util.format('select ticketId,number from ticket_Numbers where userId="%s"', userId);
    return db.query(sql);
}
exports.myTickets = function (userId, cb) {
    getTickets(userId).then(async (data) => {
        let tickets = data.rows;
        for (let ticket of tickets) {
            await db.query(util.format('select userId,number from ticket_numbers where ticketId="%s"', ticket.ticketId))
                .then((players) => {
                    ticket.players = players.rows
                });
        }
        cb({ success: true, tickets: tickets });
    });
}

搞定了
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题