Не отправляется весь результат findAll nodejs sequelize

Я пытаюсь отправить все полученные объекты Items с помощью res.send(JSON.stringify(items));, но отправляется пустой объект {}. Как это можно исправить?

Orders.findAll({
    where: {
        userId: req.user.id
    }
}
)
    .then(p => {
        p.forEach(elf => {
            items = Items.findAll({
                where: {
                    id: elf.itemId
                }
            })    
        })          
    res.send(JSON.stringify(items));
    });

Ответы (1 шт):

Автор решения: Владимир

Items.id - обычно primary key.... findAll будет лишним) В forEach вы перебираете и на каждый результат делаете новый запрос.. Попробуйте вот так

const allOrders = await Orders.findAll({ where: { userId: req.user.id } })
const itemIds = allOrders.map(elf => elf.itemId)
const allItems = await Items.findAll({ where: { id: {[Sequelize.Op.in]: itemIds} } })
res.send(JSON.stringify(allItems))

Возможно, вам так же пригодится выборка только поля elf.itemId, а не всей строки..

→ Ссылка