Я получаю массив ObjectId
из запроса, затем мне нужно использовать их внутри другого запроса.
Вот функция:
exports.getAllByShop = wrap(async(req, res, next) => {
const products = await Product.find({ _shop: mongoose.Types.ObjectId(req.params.shopId) }).select('_id');
// how to make this query?
const sales = await Sale.find({ _product: { $in: [ products ]}});
res.status(200).json(sales);
});
Результат первого запроса products
выглядит так:
[
{ _id: 5be3601f90e40b35547ae6b4 },
{ _id: 5be4b5a3443abf196cb4cc9a }
]
Чего я пытаюсь достичь:
const sales = await Sale.find({ _product: {
$in:
[
mongoose.Types.ObjectId(prod1),
mongoose.Types.ObjectId(prod2),
...
]
}});
Мне нужно найти все sales
, у которых _product
равно значениям указанного выше массива. Прямо сейчас это не работает и показывает это сообщение: "Cast to ObjectId failed for value "[ { _id: 5be3601f90e40b35547ae6b4 },↵ { _id: 5be4b5a3443abf196cb4cc9a } ]" at path "_product" for model "sale""
. Как заставить работать этот последний запрос?