Таким образом, в общем, данные корзины покупок хранятся в локальном хранилище, анализируются и передаются в массив, а затем должны быть подписаны и отправлены в MongoDB, но возвращают «undefined»:
извлечение. тс
confirmOrder(){
let orderDetails: any = {};
orderDetails.firstName = this.checkOutForm.controls['firstName'].value;
orderDetails.lastName = this.checkOutForm.controls['lastName'].value;
orderDetails.phone = this.checkOutForm.controls['phone'].value;
orderDetails.address = this.checkOutForm.controls['address'].value;
orderDetails.country = this.checkOutForm.controls['country'].value;
orderDetails.city = this.checkOutForm.controls['city'].value;
this.orderItem=[];
for (let i in this.productAddedToCart) {
this.orderItem.push({
product_Name:this.productAddedToCart[i].product_Name,
id:this.productAddedToCart[i].id,
product_Price:this.productAddedToCart[i].product_Price,
product_Quantity:this.productAddedToCart[i].product_Price,
type:this.productAddedToCart[i].type,
product_Img: this.productAddedToCart[i].product_Img,
product_Description:this.productAddedToCart[i].product_Description,
_id:this.productAddedToCart[i]._id
});
}
orderDetails.product= this.orderItem
debugger
console.log("orderDetails:", orderDetails.product)
this.connectionService.sendReceipt(this.checkOutForm.value).subscribe((res) =>{
debugger
console.log("res is:", res);
});
this.orderService.CreateOrder(orderDetails).subscribe((data:OrderDetails) => {
debugger
console.log("data is:", data) // prints nothing
debugger
this.globalResponse = data
console.log("data is:", this.globalResponse) //prints nothing
debugger
});
alert('Your order has been received.');
this.checkOutForm.reset();
this.disabledSubmitButton = true;
this.router.navigate(['/']);
localStorage.removeItem('product');
localStorage.removeItem('cartItemCount');
};
this.globalResonse имеет значение "undefined". Почему невозможно использовать console.log (data)? Разве это не подписано?
order.service.ts:
CreateOrder(orderDetails:OrderDetails){
return this.http.post(`${this.uri}/order`, orderDetails,{
observe:'body'})
}
Мой бэкэнд при необходимости (работает):
//create order
orderRoute.route('/').post((req, res) =>{
Product.findById(req.body.productId)
.populate('product')
.then(product => {
if(!product){
return res.status(404).json({
message: "product not found"
});
}
const order = new OrderDetails({
_id: new mongoose.Types.ObjectId(),
product: req.body.productId,
email: req.body.email,
firstName:req.body.firstName,
lastName: req.body.lastName,
phone: req.body.phone,
address: req.body.address,
});
return order.save()
})
.then(result => {
console.log(result);
return res.status(200).json({
message: "Order was Created",
order: {
order_id: result._id,
product: result.product,
firstName:result.firstName,
lastName: result.lastName,
email: result.email,
phone: result.phone,
address: result.address,
createdAt: new Date,
},
request:{
type:"GET",
order_url: "http://localhost:5000/order/" + result._id
}
});
})
.catch(err => {
console.log(err);
res.status(500).json({
error:err
});
});
});
Я также получаю 2 ошибки: Ошибка [ERR_HTTP_HEADERS_SENT]: невозможно установить заголовки после их отправки клиенту
(узел: 17548) UnhandledPromiseRejectionWarning: Ошибка [ERR_HTTP_HEADERS_SENT]: Невозможно установить заголовки после их отправки клиенту
Сильно оценен!