jordie_f
jordie_f

Reputation: 37

Print result from promise map

Hi guys I have 2 methods.

checkVenueAvailability(venues) {
        var replaced = venues.replace(/\t/g, "");
        var venues = replaced.split(',');
        var length = venues.length;
        Promise.all(venues.map(venue => {
            return new Promise((resolve, reject) => {
                pool.query("SELECT * FROM peminjaman_venue WHERE nama_venue = ?", venue,
                    function (err, rows, fields) {
                        if (err) {
                            return reject(err);
                        }
                        return resolve(rows);
                })
            })
        }))
    }

And

mengajukan_event(req, res) {
        helper.checkVenueAvailability(req.body.venue_1)
        .then(function (result) {
            console.log(result);
        }).catch(function (err) {
            console.log(err);
        })
}

I want to print the result of checkVenueAvailability in mengajukan_event. How to achieve that. My code above just return error. Thankyou.

Upvotes: 0

Views: 54

Answers (1)

T.J. Crowder
T.J. Crowder

Reputation: 1074276

You aren't returning anything. Just return the promise from Promise.all:

    return Promise.all(venues.map(venue => {
//  ^^^^^^

Also note that there are DB adapters with a Promise-based API available now. Or, if you can't use one, you can use util.promisify.

const promiseQuery = util.promisify(pool.query);

Then

checkVenueAvailability(venues) {
    var replaced = venues.replace(/\t/g, "");
    var venues = replaced.split(',');
    return Promise.all(venues.map(venue => promiseQuery("SELECT * FROM peminjaman_venue WHERE nama_venue = ?", venue));
}

(I also removed var length = venues.length; since length wasn't used for anything.)

Upvotes: 1

Related Questions