var objectID=require('mongodb').ObjectId
router.get('/view-ordered-products/:id',async(req,res)=>{
console.log(req.params.id)
let orderProducts=await userHelpers.getOrderedProducts(req.params.id)
res.render('user/view-ordered-products',{orderProducts})
})
getorderedproducts function is as folllows:
getOrderedProducts:(id)=>{
return new Promise(async (resolve, reject) => {
const cartItems = await db.get().collection(collection.ORDER_COLLECTION).aggregate([
{
$match: { _id:new objectID(id) }
},
{
$unwind:'$products'
},
{
$project:{item:'$products.item',quantity:'$products.quantity'}
},
{
$lookup:{
from:collection.PRODUCT_COLLECTION,
localField:'item',
foreignField:"_id",
as:'product'
}
},
{
$project:{
item:1,quantity:1,product:{$arrayElemAt:['$product', 0]}
}
}
]).toArray()
console.log(cartItems)
resolve(cartItems)
})
这里的
_id
不能与new objectID(id)
匹配来访问mongodb数据库中的集合
它显示错误throw new BSONError('Argument passed in must be a string of 12 bytes or a string of 24 hex characters or an integer');
我尝试过安慰从params获得的id,它是一个字符串
如何匹配数据库中的id
请帮忙
引号也通过 url 传递,它应该看起来像这样 http://localhost:3000/view-ordered-products/64fab9e6849734d04c71fd3b 不是, http://localhost:3000/view-ordered-products/'64fab9e6849734d04c71fd3b'