如何使用 get 方法更新我的原始 mongodb 数据库?

发布于 2025-01-10 06:23:12 字数 864 浏览 0 评论 0原文

我正在尝试使用 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

茶花眉 2025-01-17 06:23:12

您可以使用 $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 将返回新文档的内容。

You can use $inc operator instead. Try refactoring the code as shown below:

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 will create a new document if missing and new will return contents of the new document.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文