Мне нужно написать функцию, которая ищет объект с помощью _id в mongodb, и внутри этого объекта он найдет другой массив идентификаторов из другой коллекции, а затем найдет имена из другой коллекции, используя этот массив идентификаторов.
Вместо того, чтобы идти к большему количеству циклов, я напрямую попытался получить доступ с помощью индекса.
Order.findById(orderId)
.then(order => {
if(!order){
console.log('No Order');
return next(new Error('No Order Found'));
}
console.log(order.productId[0]);
console.log('reached here 1');
Product.findById(order.productId[0])
.then( product => {
if(!product){
return res.redirect('/admin/create-subadmin');
}
console.log('inside FindById');
const ProductName1 = product.name;
console.log(ProductName1);
})
.catch(err => console.log(err));
console.log('reached here');
})
.catch(err => {
console.log(err);
});
Токовый выход:
5cb9e18d6c17f41bacbcdf55 //(id of product[0])
reached here 1
reached here
inside FindById
Titleasd //(name of of product[0])
Я не могу понять, почему это происходит внутри Product.findById в прошлом.т.е. console.log («достигнуто здесь»);// выполнение этой строки выполняется до Product.findById
Scheme of Order
{
_id: mongoose.Schema.Types.ObjectId,
orderId:String,
productId:Array
}
Schema of Product
{
product_id: {type: Schema.Types.ObjectId,
},
title: String,
name:{
type: String,
unique: true,
required: true
},
price:Number
}
Я ожидаю, что функция войдет внутрь Order -> перейти к массиву productId -> Используя эти идентификаторы, найдите все названия продуктов ицена и хранить их в объекте или массиве что-нибудь, но я даже не могу понять поток управления прямо сейчас.