0

Why is the property players gone from the result of an async call?

let getTickets = (userId) => {
    return new Promise((resolve, reject) => {
        let sql = util.format('select ticketId,number from ticket_Numbers where userId="%s"', userId);
        db.query(sql)
            .then(data => { resolve(data.rows); })
            .catch(err => { console.log(err.stack) });
    });
}
let getSameTicketPlayers = (tickets) => {
    for (let ticket of tickets) {
        db.query(util.format('select userId,number from ticket_numbers where ticketId="%s"', ticket.ticketId))
            .then((players) => { ticket.players = players.rows; });
    }
    return new Promise((resolve, reject) => {
        resolve(tickets);
    });
}

exports.myTickets = (userId, cb) => {
    getTickets(userId).then(getSameTicketPlayers).then(tickets => {
        console.log(tickets);   //tickets has players property here
        console.log(JSON.stringify(tickets));   // players property is gone, why?
        cb(tickets);
    });
}

Screenshot

Radek
  • 3,913
  • 3
  • 42
  • 37
  • sorry, forget to modify image description, above is link to console log screenshot, thank you – Qingfu Shi Jul 12 '18 at 14:29
  • Your promise isn't actually waiting for anything. https://stackoverflow.com/questions/23803743/what-is-the-explicit-promise-construction-antipattern-and-how-do-i-avoid-it, and use `Promise.all()`. – SLaks Jul 12 '18 at 14:30

0 Answers0