react.js 正如您在 react 代码中看到的那样,我正在尝试减少数量,但在 react 中我很难做到这一点。我想要的是如果单击按钮,那么数量应该减少 1。我想我是
const [quantity, setQuantity] = useState(0)
const handleDelivery = event => {
event.preventDefault();
const deliveryInventoryItem = inventoryItem.quantity(quantity-1);
const url = `http://localhost:5000/inventoryItem/${inventoryItemId}`;
fetch(url, {
method: 'PUT',
headers: {
'content-type': 'application/json'
},
body: JSON.stringify(deliveryInventoryItem)
})
.then(res => res.json())
.then(data => {
console.log('success', data);
alert('users added successfully!');
event.target.reset();
setQuantity(data)
})
}
node.js
app.put('/inventoryItem/:id', async (req, res) => {
const id = req.params.id;
const deliveryInventoryItem = req.body;
console.log(id, updatedInventoryItem);
const filter = {_id: ObjectId(id)};
const options = {upsert: true};
const updatedDoc = {
$set: {
quantity: deliveryInventoryItem.quantity
}
};
const result = await inventoryItemCollection.updateOne(filter, updatedDoc, options);
res.send(result);
})
回答1
在 mongoDB 中,使用 $inc 来增加或减少数量,查看更多:https://db.products.updateOne(%20%20%20%20%7B%20sku:%20%22abc123%22%20%7D,%20%20%20%20%7B%20$inc:%20%7B%20quantity:%20-2,%20%22metrics.orders%22:%201%20%7D%20%7D%20)
在 React 应用程序中:
const quantityChange = -1 // If you want decrease 1 by 1 or any number you want increase or decrease by this number
fetch(url, {
method: 'PUT',
headers: {
'content-type': 'application/json'
},
body: JSON.stringify(quantityChange)
}).then().catch()
...
在 Nodejs App 中,编辑您的 updatedDoc:
const { quantityChange } = res.body
const updatedDoc = {
$inc: {
quantity: quantityChange
}
};