router.post('/validateCart', (req, res) => {
let cart = req.body
var warnings = []
var warning = {}
var dbCart = []
var updatedProduct = {}
cart.forEach(eachProduct => {
Products.findOne({ _id: eachProduct.product._id })
.then(product => {
if (product.inStock) {
if (product.price === eachProduct.product.price) {
dbCart.push(eachProduct)
} else {
updatedProduct.product = product
updatedProduct.quantity = eachProduct.quantity
warning.product = product
warning.definition = 'Product price has changed.'
dbCart.push(updatedProduct)
}
}
else {
warning.product = product
warning.definition = 'This item is out of stock.'
}
warning.product = 'test'
if (Object.keys(warning).length > 0) {
warnings.push(warning)
}
updatedProduct = {}
warning = {}
})
.catch(err => console.log(err))
})
console.log(dbCart)
})
I am trying to validate products in my shopping cart, however when i try to compare products that are in my shopping cart and database and add warnings, I cant return a new array. console.log(dbCart, warnings)
both return initial state. Can someone tell me where my mistake is?