首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >bson.errors.InvalidId:“_id”不是有效的ObjectId,它必须是12字节的输入或24字符的十六进制字符串。

bson.errors.InvalidId:“_id”不是有效的ObjectId,它必须是12字节的输入或24字符的十六进制字符串。
EN

Stack Overflow用户
提问于 2022-05-02 01:09:15
回答 1查看 1.8K关注 0票数 2
代码语言:javascript
复制
@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)获得文档。

我试了那么多东西,但都没有用!

我认为解决方案是必须将字符串转换为字节实例。

就连我都试着这么做

代码语言:javascript
复制
@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)的实例,而不是字节’>

(预先谢谢:)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-05-02 08:31:22

您的objectId有25个字符;如果使其成为24个字符,它将工作。

代码语言:javascript
复制
from pymongo import MongoClient
from bson import ObjectId

db = MongoClient()['mydatabase']

db.mycollection.insert_one({
    "_id": ObjectId('626bccb9697a12204fb22ea3'),
    "key": "value"
})
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72081511

复制
相关文章

相似问题

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