我正在嘗試使用 get 方法更新我的資料庫,使用 get 方法更新資料庫的原因是因為當呼叫 get 方法時,一個值會自動增加。
這是我試圖在 get 方法中更新資料庫的代碼。mongoose 可以,但我使用原始 MongoDB 來更新它。可以更新嗎?或任何其他方式在/:shortUrl請求服務器時自動更新它。
app.get('/:shortUrl', async (req, res) => {
const filter = {
short: req.params.shortUrl
}
const updateDoc = {
$inc: {
clicks: 1
}
}
const urlDoc = await bicycleAffiliateLinksCollection.findOneAndUpdate(filter, updateDoc, {
new: false,
upsert: true
})
console.log(urlDoc.value.short)
res.redirect(`${urlDoc.value.full}?ref=${req.params.shortUrl}`)
res.send({
shortLink: urlDoc.value.short
})
})
uj5u.com熱心網友回復:
您可以改用$inc運算子。嘗試重構代碼,如下所示:
app.get('/:shortUrl', async (req, res) => {
const filter = {
short: req.params.shortUrl
}
const updateDoc = {
$inc: {
clicks: 1
}
}
const urlDoc = await bicycleAffiliateLinksCollection.findOneAndUpdate(filter, updateDoc, {
new: true,
upsert: true
})
console.log(urlDoc)
res.send({
shortLink: urlDoc.short
})
})
upsert如果丟失,將創建一個新檔案并new回傳新檔案的內容。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/433616.html
標籤:javascript 反应 数据库 mongodb 猫鼬
