首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在不抛出错误的情况下像数据库中的不喜欢投票一样更新?

如何在不抛出错误的情况下像数据库中的不喜欢投票一样更新?
EN

Stack Overflow用户
提问于 2021-12-12 08:31:03
回答 2查看 33关注 0票数 1

我正在用MongoDB制作一个在线商业术语词典。我想让人们能够上下投票。我正在处理CRUD,但我对更新部分记录的语法有点困惑。

我有一个模板:

代码语言:javascript
复制
    <div class="col s-12 m-9 l10 text-center cyan-text text-darken-3 dict-cta">
        <a href="{{url_for('like', entry_id=entry._id)}}">
        <i class="far fa-thumbs-up"></i></a>
    </div>

逻辑是,当单击"like“时,代码应该从字典中提取"love_percent",转换为整数(如果不存在则提供值为零),添加1,转换为字符串,并在同一个ObjectID中进行更新。这是我为该路线编写的代码:

代码语言:javascript
复制
    @app.route("/like/<entry_id>")
    def like(entry_id):
        entry = mongo.db.jargon.find_one({"_id": ObjectId(entry_id)})
        value = int(entry["love_percent"][0])
        value += 1
        value = str(value)
        entry.update_one({"_id": ObjectId(entry_id)},
            {"$set": {
                love_percent[0]: value
            }})
        return render_template("jargon.html") 

我试过使用update或存储整数,但这似乎解决了它。一位朋友建议update_one,但我基本上有点困惑和迷失。

有人能告诉我我在这里错过了什么或者更好的方法吗?

(我知道这并不能阻止来自同一用户的多个投票;这种功能可以在稍后实现。)

这本字典是在这里用Heroku制作的,我已经把它推到了bug:行话上。

我在回溯中得到以下错误: AttributeError:'dict‘对象没有属性'update_one’

此代码的存储库位于Github:https://github.com/dandavies23/jargon-unchained中。

EN

回答 2

Stack Overflow用户

发布于 2021-12-12 08:50:11

根据我对这个问题的理解。

您需要更改以下内容:

  1. 因为你现在只有一个选择
代码语言:javascript
复制
value = int(entry["love_percent"])
  1. 您正在数据库中进行更改,因此请使用以下命令。
代码语言:javascript
复制
mongo.db.jargon.update_one({"_id": ObjectId(entry_id)},
            {"$set": {
                "love_percent" : value
            }})

试着说出评论中遇到的问题。

票数 0
EN

Stack Overflow用户

发布于 2021-12-12 16:15:17

删除,我认为这不是一个位置,而是一个默认的整数。已解决的问题使每个条目在数据输入上默认为55。

我还用函数中未定义的术语重新呈现模板。用重定向修正了。

代码语言:javascript
复制
def like(entry_id):
    entry = mongo.db.jargon.find_one({"_id": ObjectId(entry_id)})
    value = int(entry["love_percent"])
    value += 1
    value = str(value)
    mongo.db.jargon.update_one({"_id": ObjectId(entry_id)},
        {"$set": {
            "love_percent": value
        }})
    return redirect(url_for("get_jargon"))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70322057

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档