#node.js #express
#node.js #экспресс
Вопрос:
Я пытался создать корзину покупок, в которой я мог бы уменьшить количество товаров в корзине, но я не знаю, как это сделать, а также как протестировать ее с помощью postman. Это то, что было реализовано до сих пор. Мне нужно уменьшить количество, например, если пользователь передумает с 3 предметов на 2 предмета, я хочу уменьшить количество на единицу, а также изменить цену и общее количество на текущее количество
let { productId } = req.body;
const quantity = Number.parseInt(req.body.quantity);
let productObject = await Products.findOne({ _id: productId });
let cartObject = await CartItem.findOne({ status: 1 });
let productPriceObject = await Price.findOne({ productId: productObject._id, status: 1 });
if (cartObject.items.unitCount <= quantity) {
var oldQuantity = 0;
for (var i = 0; i < cartObject.items.length; i ) {
if (cartObject.items[i]._id == productId) {
oldQuantity = cartObject.items[i].unitCount;
}
}
let cartUpdateObject = await CartItem.findOneAndUpdate({
_id: cartObject._id,
productId: items.productId,
status: 1,
guestId: req.guest._id,
}, { $set: { "items.$.unitCount": quantity } }, { new: true });
if (!!cartUpdateObject) {
cartObject.items[i].total = cartObject.items[i].unitCount * productPriceObject.value;
cartObject.items[i].price = productPriceObject.value;
cartObject.subTotal = cartObject.items.map((item) => item.total).reduce((acc, next) => acc next);
} else {
return res.status(400)
.json({
success: false,
message: "unable to update quantity",
error,
});
}
}
Это моя модель схемы для модели корзины, которую я использовал для создания товаров в корзине
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
let ItemSchema = new Schema({
productId: {
type: mongoose.Schema.Types.ObjectId,
ref: "Product",
},
unitCount: {
type: Number,
required: true,
min: [1, 'Quantity can not be less then 1.']
},
price: {
type: Number,
required: true
},
total: {
type: Number,
required: true,
}
}, {
timestamps: true
})
module.exports = mongoose.model('item', ItemSchema);
const CartSchema = new Schema({
userId: {
type: mongoose.Schema.Types.ObjectId,
ref: "User",
},
items: [ItemSchema],
subTotal: {
default: 0,
type: Number
}
}, {
timestamps: true
})
module.exports = mongoose.model('cart', CartSchema);
Комментарии:
1. Я не думаю, что разумно вызывать API при каждом увеличении или уменьшении количества товаров, количества товаров и цены, которые должны обрабатываться во внешнем интерфейсе, затем вы можете вызвать api, чтобы узнать, доступен ли запрошенный товар, а затем перейти к способу оплаты.
2. Вы имеете в виду, что мне не нужно включать уменьшение товара в мой вызов api для товаров корзины, верно
3. да, это должно быть сделано внутри вашего интерфейса