什么是 Mongoose 错误:对于路径“_id”处的值 XXX,转换为 ObjectId 失败?

2023-12-26

当发送请求至/customers/41224d776a326fb40f000001和一个文件_id 41224d776a326fb40f000001不存在,doc is null我正在返回一个404:

  Controller.prototype.show = function(id, res) {
    this.model.findById(id, function(err, doc) {
      if (err) {
        throw err;
      }
      if (!doc) {
        res.send(404);
      }
      return res.send(doc);
    });
  };

然而,当_id与 Mongoose 期望的“格式”(我想)不匹配,例如GET /customers/foo返回一个奇怪的错误:

CastError:路径“_id”处的值“foo”转换为 ObjectId 失败。

那么这个错误是什么?


猫鼬的findById方法投射id模型类型的参数_id字段,以便它可以正确查询匹配的文档。这是一ObjectId but "foo"不是有效的ObjectId所以演员阵容失败了。

这不会发生在41224d776a326fb40f000001因为该字符串是有效的ObjectId.

解决此问题的一种方法是在您的findById打电话看看是否id是一个有效的ObjectId或者不这样:

if (id.match(/^[0-9a-fA-F]{24}$/)) {
    // Yes, it's a valid ObjectId, proceed with `findById` call.
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

什么是 Mongoose 错误:对于路径“_id”处的值 XXX,转换为 ObjectId 失败? 的相关文章

  • 如何将excel文件(XLSX)导入mongoDB [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我有一组数据作为输入以 XLSX 格式提供给 MongoDB 我该如何将 Excel 文件作为输入导入
  • 猫鼬查找并删除

    我正在尝试删除满足查询的多个文档 但是 我需要这些文档的数据将它们存储在单独的集合中以实现撤消功能 我让它工作的唯一方法是使用多个查询 Data find query exec function err data Data remove q
  • 使用 or 运算符进行 Morphia 查询

    我想知道如何使用 or 运算符编写 Morphia mongodb 查询我这样写了 mongodb 查询 效果很好 db Inv find or sug id 2 grp id 2 但是当我尝试在吗啡中编写此内容时 我感到很困惑 以下查询是
  • 对开始和结束范围进行分组和计数

    如果我有以下格式的数据 id 1 startDate ISODate 2017 01 1T00 00 00 000Z endDate ISODate 2017 02 25T00 00 00 000Z type CAR id 2 startD
  • 为什么 Casbah / Java MongoDB 驱动程序最终会出现 java.lang.IllegalArgumentException?

    我使用时看到一个奇怪的问题casbah java driver 当驱动程序尝试从 mongo 创建响应时 我不断遇到以下异常 Oct 16 2012 10 45 07 AM com mongodb DBTCPConnector MyPort
  • 如何在猫鼬中使用聚合

    如何在 mongoose 中定义以下 MongoDB 聚合查询 db contacts aggregate group id code Code name Name 查询的目的是获取不同代码和名称的列表 我当前的模型代码是 use stri
  • Pymongo 中的全文搜索

    即将推出的 MongoDB 2 4 支持全文检索 http docs mongodb org manual release notes 2 4 text indexes 我们在 mongo shell 中使用命令来执行此操作 例如 db p
  • mongo docker 镜像创建后未运行脚本

    我使用 docker compose 为前端 后端和 mongo 实例创建 3 个不同的容器 其中三个正在运行并在它们之间连接 但我需要在 mongo 实例运行后立即在数据库上创建一个管理员用户 根据 mongo 图像文档 每个脚本位于do
  • 使用 PyMongo 将 MongoDB find() 返回序列化为非匿名 JSON 数组

    我的 Python 代码查询 MongoDB 并返回an array以下对象 u attribute u value u id ObjectId 534776c66e5987041f6154bd 我想要实现的是返回以下 JSON mycol
  • MongoDB的ObjectId是如何生成的?

    他们是吗somewhat随机的 我的意思是 人们能够将它们分开吗 它们不是随机的 可以很容易地预测 BSON ObjectID 是一个 12 字节值 由 4 字节时间戳组成 自纪元以来的秒数 一个 3 字节 机器 ID 2 字节进程 ID
  • ElasticSearch 和 PHP 中的多个字段搜索

    我正在使用最新版本弹性搜索 PHP https github com elasticsearch elasticsearch php以及最新版本的 MongoDB 和 ElasticSearch 我需要对可以包含一个或多个值的多个字段进行搜
  • mongodb 正在运行吗?

    我已经在我的 Unix 服务器上安装了 Mongodb 和 PHP 驱动程序 我的问题是如何判断 Mongodb 是否正在运行 是否有一个简单的命令行查询来检查状态 如果我从外壳程序启动一次 如果我退出外壳程序 它会继续运行 情况似乎并非如
  • 如何修复 MongoClient is not a constructor 错误

    我刚刚学习 JavaScript 和 Nodejs 根据我在网上找到的一些代码 我编写了以下应用程序 当我尝试运行它时 我在第 9 行收到错误 其中显示 new MongoClient 错误提示 MongoClient 不是构造函数 您能解
  • 清理 MongoDB 的输入

    我正在为 MongoDB 数据库程序编写 REST 接口 并尝试实现搜索功能 我想公开整个 MongoDB 接口 我确实有两个问题 但它们是相关的 所以我将它们放在一篇文章中 使用 Python json 模块解码不受信任的 JSON 是否
  • 在 Mongoose 中保存模型无法保存嵌套组件

    我有以下模型架构 var memberSchema mongoose Schema project type Schema Types ObjectId ref Project first String last String email
  • mongoengine 操作的原子性如何

    我正在尝试在对象的状态之间转换 如下所示 User objects id user id state STATE WAITING update one set state STATE FINISHED The question是 是否存在这
  • MongoDB 中两个集合之间的 Diff()

    我做过研究 如果这是一个重复的问题 我很抱歉 但其他问题的解决方案并不适合我 因此 我提出了一个新问题 使用 Javascript 比较两个集合的最佳方法是什么 我有数千个这样的 Mongo 文档格式的标头 url google com h
  • MongoDB 如何选择候选计划

    我的应用程序中的查询速度很慢 创建两个索引后 它在本地数据库中使用它们以获得更好的性能 但是当我部署在生产数据库上时 它仍然使用原始索引 下面是我所做的 集合中的属性tasks team id project id created by a
  • 相同的单词但不同的 unicode 字符

    我在 Windows 上使用 Python 构建了一个关于越南餐馆的问答应用程序 要编写越南语字符 我需要使用 Unicode 首先 我从使用 HTML charset utf 8 的 TripAdvisor 网站克隆数据并构建我的 Mon
  • MongoDB:仅获取过去 24 小时内创建的文档?

    我想限制我所做的查询仅查看过去 24 小时内创建的文档 构造此查询的最佳方式是什么 如何根据日期进行限制 Add createdAt字段 索引它 然后查询 db getCollection COLLECTION NAME find crea

随机推荐