@app.route("/product/<id_product>", methods=["GET"])
def product(id_product):
params = request.args
api_key = params["APIKEY"]
if check_key(api_key):
review = reviews.find_one(ObjectId(id_product), projection= {"comments": 0, "_id": 0, "user_image":0})
product = products.find_one(ObjectId(id_product), projection= {"views": 0})
products.update_one({"_id":ObjectId(id_product)}, {"$inc":{"views": 1}})
return jsonify(product=product, reviews=review)
else:
return jsonify(ERROR="AUTHENTICATION PROBLEM USE VALID API KEY")错误:
bson.errors.InvalidId:‘626bccb96a12204fb22e30’不是有效的ObjectId,它必须是一个12字节的输入或一个24字符的十六进制字符串。
我的代码它从url获得一个product_id,product_id是mongodb中某些产品的_id。
例如, :
id_product = 626bccb9697a12204fb22ea30
在mongodb中,我的代码应该使用_id = ObjectId(626bccb9697a12204fb22ea30)获得文档。
我试了那么多东西,但都没有用!
我认为解决方案是必须将字符串转换为字节实例。
就连我都试着这么做
@app.route("/product/<id_product>", methods=["GET"])
def product(id_product):
params = request.args
api_key = params["APIKEY"]
pro= bytes(id_product , "utf-8"))
if check_key(api_key):
review = reviews.find_one(ObjectId(pro), projection= {"comments": 0, "_id": 0, "user_image":0})
product = products.find_one(ObjectId(pro), projection= {"views": 0})
products.update_one({"_id":ObjectId(pro)}, {"$inc":{"views": 1}})
return jsonify(product=product, reviews=review)
else:
return jsonify(ERROR="AUTHENTICATION PROBLEM USE VALID API KEY")在这段代码中,我试图将字符串转换为字节,但不起作用
错误:
TypeError: id必须是字节(字节,str,ObjectId)的实例,而不是字节’>
(预先谢谢:)
发布于 2022-05-02 08:31:22
您的objectId有25个字符;如果使其成为24个字符,它将工作。
from pymongo import MongoClient
from bson import ObjectId
db = MongoClient()['mydatabase']
db.mycollection.insert_one({
"_id": ObjectId('626bccb9697a12204fb22ea3'),
"key": "value"
})https://stackoverflow.com/questions/72081511
复制相似问题