mongodb returns matchCount 1 但 modifiedCount 0
mongodb returns matchCount 1 but modifiedCount 0
我正在制作一个网络应用程序,其中一张卡片显示产品的数量。还有一个名为 Delivered 的按钮。点击按钮后,我想减少数量 1.假设,一个产品的数量是 10,如果我点击 Delivered 按钮,产品的数量应该变成 9,并且它应该在 mongoDb 数据库上更新。幸运的是它奏效了。但是我遇到了一个小问题。问题是,当我第一次单击按钮时 mongoDb returns acknowledged: true, modifiedCount: 0, upsertedId: null, upsertedCount: 0, matchedCount: 1
并且数据从 UI 更新但未在 mongoDb 服务器中更新。然后我第二次点击按钮然后 mongoDb returns acknowledged: true, modifiedCount: 1, upsertedId: null, upsertedCount: 0, matchedCount: 1
。客户站点代码如下:
const { _id, img, name, seller, price, qnt, description } = product
const [quantity, setQuantity] = useState(qnt);
const handleQnt = () => {
const numQuantity = Number(quantity);
setQuantity(numQuantity - 1);
const url = `http://localhost:5000/update-quantity/${_id}`;
fetch(url, {
method: 'PUT',
headers: {
'content-type': 'application/json'
},
body: JSON.stringify({
qnt: quantity
})
})
.then(res => res.json())
.then(result => {
console.log(result);
});
}
console.log(quantity);
按钮代码是:
<button onClick={() => handleQnt()} > Delivered </button>
并且服务器站点代码是:
app.put('/update-quantity/:id', async (req, res) => {
const id = req.params.id;
const data = req.body;
const filter = { _id: ObjectId(id) };
const options = { upsert: true };
const updatedDoc = {
$set: {
qnt: data.qnt
},
};
const result = await camCollection.updateOne(filter, updatedDoc, options);
res.send(result)
})
您从客户端发送 quantity
,但该变量未反映 setQuantity()
所做的更改。您应该声明 let newNumQuantity = numQuantity - 1
并向服务器发送 newNumQuantity
而不是数量。
我正在制作一个网络应用程序,其中一张卡片显示产品的数量。还有一个名为 Delivered 的按钮。点击按钮后,我想减少数量 1.假设,一个产品的数量是 10,如果我点击 Delivered 按钮,产品的数量应该变成 9,并且它应该在 mongoDb 数据库上更新。幸运的是它奏效了。但是我遇到了一个小问题。问题是,当我第一次单击按钮时 mongoDb returns acknowledged: true, modifiedCount: 0, upsertedId: null, upsertedCount: 0, matchedCount: 1
并且数据从 UI 更新但未在 mongoDb 服务器中更新。然后我第二次点击按钮然后 mongoDb returns acknowledged: true, modifiedCount: 1, upsertedId: null, upsertedCount: 0, matchedCount: 1
。客户站点代码如下:
const { _id, img, name, seller, price, qnt, description } = product
const [quantity, setQuantity] = useState(qnt);
const handleQnt = () => {
const numQuantity = Number(quantity);
setQuantity(numQuantity - 1);
const url = `http://localhost:5000/update-quantity/${_id}`;
fetch(url, {
method: 'PUT',
headers: {
'content-type': 'application/json'
},
body: JSON.stringify({
qnt: quantity
})
})
.then(res => res.json())
.then(result => {
console.log(result);
});
}
console.log(quantity);
按钮代码是:
<button onClick={() => handleQnt()} > Delivered </button>
并且服务器站点代码是:
app.put('/update-quantity/:id', async (req, res) => {
const id = req.params.id;
const data = req.body;
const filter = { _id: ObjectId(id) };
const options = { upsert: true };
const updatedDoc = {
$set: {
qnt: data.qnt
},
};
const result = await camCollection.updateOne(filter, updatedDoc, options);
res.send(result)
})
您从客户端发送 quantity
,但该变量未反映 setQuantity()
所做的更改。您应该声明 let newNumQuantity = numQuantity - 1
并向服务器发送 newNumQuantity
而不是数量。