bson.errors.InvalidId: '_id' 不是有效的 ObjectId,它必须是 12 字节的输入或 24 字符的十六进制字符串
bson.errors.InvalidId: '_id' is not a valid ObjectId, it must be a 12-byte input or a 24-character hex string
@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: '626bccb9697a12204fb22ea30' 不是有效的 ObjectId,它必须是 12 字节的输入或 24 字符的十六进制字符串
我的代码从 url product_id 中获取 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 必须是 (bytes, str, ObjectId) 的实例,而不是
提前致谢:)
您的 objectId
有 25 个字符;如果你把它设为 24 个字符,它就可以工作。
from pymongo import MongoClient
from bson import ObjectId
db = MongoClient()['mydatabase']
db.mycollection.insert_one({
"_id": ObjectId('626bccb9697a12204fb22ea3'),
"key": "value"
})
@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: '626bccb9697a12204fb22ea30' 不是有效的 ObjectId,它必须是 12 字节的输入或 24 字符的十六进制字符串
我的代码从 url product_id 中获取 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 必须是 (bytes, str, ObjectId) 的实例,而不是
提前致谢:)
您的 objectId
有 25 个字符;如果你把它设为 24 个字符,它就可以工作。
from pymongo import MongoClient
from bson import ObjectId
db = MongoClient()['mydatabase']
db.mycollection.insert_one({
"_id": ObjectId('626bccb9697a12204fb22ea3'),
"key": "value"
})