对于模型“Product”的路径“_id”处的值“ascendPrice”,Cast to ObjectId 失败是啥?

Posted

技术标签:

【中文标题】对于模型“Product”的路径“_id”处的值“ascendPrice”,Cast to ObjectId 失败是啥?【英文标题】:what's Cast to ObjectId failed for value "ascendPrice" at path "_id" for model "Product"?对于模型“Product”的路径“_id”处的值“ascendPrice”,Cast to ObjectId 失败是什么? 【发布时间】:2021-04-24 14:30:41 【问题描述】:
sortByAscend (req, res) 
    Product.find().aggregate([
        $sort: price: 1
    ])
    .then(ascend => 
        console.log("Displaying ascended price")
        res.status(201).json(
            ascend
        )
    )
    .catch(err => 
        console.log(err)
        res.status(500).json(
            message: "Internal server error"
        )
    )

我发送了一个请求 GET 以显示排序后升序价格的输出。

错误是

CastError: 路径中的值“ascendPrice”转换为 ObjectId 失败 模型“产品”的“_id”

我不明白错误是什么。

【问题讨论】:

【参考方案1】:

错误是不言自明的。路径 _id 必须采用特定格式,而字符串 ascendPrice 不是。

Mongo _id 必须是 ObjectId,由以下人员组成(如文档解释):

一个 4 字节的时间戳值,表示 ObjectId 的创建,以 Unix 纪元以来的秒数为单位 一个 5 字节的随机值 一个 3 字节递增计数器,初始化为随机值

因此,您使用的值必须与此匹配,而您的号码不匹配。

所以问题在于您的集合中存在(至少)一个文档 _idascendPrice 并且它不遵循模式并且不能转换为 ObjectId

【讨论】:

以上是关于对于模型“Product”的路径“_id”处的值“ascendPrice”,Cast to ObjectId 失败是啥?的主要内容,如果未能解决你的问题,请参考以下文章

Mongoose:CastError:对于模型“”的路径“_id”处的值“”,转换为 ObjectId 失败

CastError:对于猫鼬中模型的路径“_id”处的值“findByName”,转换为 ObjectId 失败

CastError:对于猫鼬中模型的路径“_id”处的值“findByName”,转换为 ObjectId 失败

护照注销()错误:对于模型“somemodel(不是用户模型)”的路径“_id”处的值“注销”,转换为 ObjectId 失败

模型的路径“_id”处的值“”转换为 ObjectId 失败

CastError:模型的路径“_id”处的值“:id”转换为 ObjectId 失败