Функция возврата внутрь карты не работает - PullRequest
0 голосов
/ 14 апреля 2020

Я пытаюсь получить информацию о продукте, такую ​​как цена, скидка по идентификатору, который я получаю из моей корзины. Эта функция возврата возвращает ноль. но отлично работает в console.log.

async function store (req,res) { 
    const item = req.session.cart;
    const cart = new Cart(item);
    const results = cart.generateArray();
    let result = [];
    result = results.map(item => { 
        Products.findOne({'_id': item.id}, function (err, r) {
            if(err){
                console.log(err);
            } else {
                return ({
                    product_id: r._id,
                    price: r.price,
                    qty: item.qty,
                    total: r.price*item.qty                
                });
                // this return is not working
            } 
        });      
    });

    let data = await result;
    return res.send(data);
}

1 Ответ

1 голос
/ 14 апреля 2020

Вы должны использовать Promise.all для решения массива обещаний:

result = results.map(async item => { 
    try {
        const r = await Products.findOne({'_id': item.id})
        return ({
            product_id: r._id,
            price: r.price,
            qty: item.qty,
            total: r.price*item.qty                
        });
    } catch (err) {
        console.log(err);
    }  
});

let data = await Promise.all(result);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...