如何使用 html、pymongo 中的按鈕更新 mongodb

索普

我有一個base.html包含項目和供用戶單擊的按鈕。

                                <p class="card-text">{{data[0].name}}</p>
                                <div class="d-flex justify-content-between align-items-center">
                                <div class="btn-group">
                                    <form action="/update/<%= data[0]._id %>" method="PATCH">
                                    <p style="margin-right:5px;">Available: {{data[0].inventory}}</p>
                                    <button type="button" class="btn btn-sm btn-outline-secondary">Add to cart</button>
                                    </form>
                                </div>

我有hello.py運行服務器的 python 文件。

from flask import Flask, render_template, redirect, request, url_for
from pymongo import MongoClient
from bson.objectid import ObjectId
app = Flask(__name__)
 

@app.route('/',methods=['GET'])
def mongoTest():
    client = MongoClient('mongodb://localhost:27017/')
    db = client.ecommerce
    collection = db.items
    results = collection.find()
    # client.close()
    return render_template('base.html', data=results)


@app.route("/update/:id", methods=["PATCH"])
def update_inventory(id):    
    client = MongoClient('mongodb://localhost:27017/')
    db = client.ecommerce
    id=request.values.get("_id")    
    db.items.update_one({ '_id': id}, {'$inc': {'inventory': -1}}, upsert=False)
    results2 = db.items.find()
    return render_template('base.html', data=results2)

if __name__ == '__main__':
    app.run(debug=True)

但是,它不會更新庫存值。我該如何解決這個問題?

查爾斯·達森維爾

id 是字符串嗎?如果是這樣,則需要將其轉換為 ObjectId。(在大多數情況下,您讓 mongo 處理 id,因此 id 是 ObjectId,而不是字符串)。

from bson.objectid import ObjectId

@app.route("/update/:id", methods=["PATCH"])
def update_inventory(id):    
    client = MongoClient('mongodb://localhost:27017/')
    db = client.ecommerce
    id = ObjectId(request.values.get("_id"))
    db.items.update_one({ '_id': id}, {'$inc': {'inventory': -1}}, upsert=False)
    results2 = db.items.find()
    return render_template('base.html', data=results2)

否則,您必須檢查:

  • 如果 id 存在,如果不存在返回錯誤?
  • “項目”集合不存在?(不是物品也不是物品?)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在MongoDB(pyMongo)中处理DuplicateKeyError?

如何使用PyMongo在MongoDB中创建新数据库?

用pymongo在mongodb中按ObjectId搜索

如何用pymongo排序mongodb

如何用pymongo排序mongodb

使用pymongo读取和更新mongodb文档的最佳方法

如何使用pymongo在mongodb中查询日期?

如何使用pymongo在mongodb查询中实现包含{m,n}的正则表达式?

MongoDB使用PyMongo打印漂亮

使用pymongo在mongodb中更新并一起插入?

如何使用pymongo编辑mongoDB中的数据

如何从pymongo执行mongodb命令?

PyMongo:如何在MongoDB中批量更新巨大的JSON数据

使用pyMongo在Flask中获取MongoDB数据

如何使用pymongo更新Mongodb中的多个值?

如何使用pymongo从mongodb获取文件对象?

无法使用pymongo查询Mongodb

如何通过pymongo将.py文件上传到mongodb中

如何使用pymongo在mongodb中存储非utf-8字符串

如果使用 pymongo 在 mongodb 中不存在数组,如何返回空元素数组

如何使用 pymongo 在 mongoDB 中创建通配符文本索引?

使用 pymongo 在 Mongodb 中查找空记录

如何使用 PyMongo 识别 MongoDB 文本索引

使用 pymongo 在 MongoDB 中插入文档

如何使用 pymongo 基于 python 中的字段比较 MongoDB 中的记录的唯一性?

如何使用pymongo在mongoDB中插入Date的特定日期格式?

如何使用plotly python中的下拉按鈕更新多個散點圖的數據?

如何使用plotly(python)中的按鈕更新直方圖nbins?

从 mongodb 使用 pymongo 进行搜索