【发布时间】:2022-01-16 04:21:39
【问题描述】:
我正在使用 MongoDB 制作在线商业术语词典。我想让对条款进行上下投票成为可能。我开始掌握 CRUD,但我对更新部分记录的语法有点困惑。
我有这个模板:
<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,转换为字符串并在同一个@内更新987654330@。这是我为该路线编写的代码:
@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_one,但我基本上有点迷茫和迷茫。
谁能建议我在这里缺少什么或更好的方法?
(我知道这不会阻止同一用户进行多次投票;该功能可能会在以后出现。)
字典正在 Heroku 上演,我已经解决了这个错误:http://jargon-unchained.herokuapp.com/get_jargon
我在 Traceback 上收到以下错误: AttributeError: 'dict' 对象没有属性 'update_one'
此代码的存储库位于 Github:https://github.com/dandavies23/jargon-unchained
【问题讨论】:
-
欢迎回到 Stack Overflow。作为复习,请阅读How to Ask 和meta.stackoverflow.com/questions/284236 和stackoverflow.com/help/minimal-reproducible-example;并确保您show complete error messages。我们只能帮助您解决我们实际看到的错误。
-
请记住,这不是论坛,并注意edits I have made to your post 以保持严格的问答风格。这并不能完全修复帖子;我无法为您解释运行代码时出了什么问题(因为到目前为止只有您知道),而且我不确定您使用什么库来实现 Web 服务器(Django?Flask?其他?您应该告诉我们;也不清楚为什么您似乎认为问题与 MongoDB 有关)。
-
谢谢@KarlKnechtel 感谢您的反馈和指导。我会看看你的答案,阅读指南然后回来。在应用您的答案之前,我可以回答您提出的一些直接问题。我正在使用烧瓶。我确定这不是 MongoDB 的问题,而是我的代码表达方式。