如何使用 get 方法更新我的原始 mongodb 数据库?
我正在尝试使用 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
})
})
I am trying to update my database using the get method, the reason behind updating the DB using the get method is because when the get method will be called a value will be increased automatically.
This is my code where I am trying to update the database inside the get method. It's possible by mongoose but I am using raw MongoDB to update it. is it possible to update? or any other way to update it automatically when /:shortUrl
will be requested into the server.
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
})
})
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可以使用
$inc
运算符反而。尝试重构代码,如下所示:如果缺少,
upsert
将创建一个新文档,并且new
将返回新文档的内容。You can use
$inc
operator instead. Try refactoring the code as shown below:upsert
will create a new document if missing andnew
will return contents of the new document.