相关疑难解决方法(0)

什么是Mongoose错误对于路径"_id"的值XXX,对ObjectId的转换失败?

当发送请求/customers/41224d776a326fb40f000001和文件_id 41224d776a326fb40f000001不存在时,docnull,我正在返回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);
    });
  };
Run Code Online (Sandbox Code Playgroud)

但是,如果_id不匹配Mongoose所期望的"格式"(我想),例如GET /customers/foo返回一个奇怪的错误:

CastError:对于路径"_id"处的值"foo",转换为ObjectId失败.

那么这个错误是什么?

mongoose mongodb

102
推荐指数
10
解决办法
14万
查看次数

MongoDB节点检查objectid是否有效

如何使用Node的驱动程序检查ObjectID是否有效

我试过了 :

var BSON = mongo.BSONPure;
console.log("Validity: "  + BSON.ObjectID.isValid('ddsd'))
Run Code Online (Sandbox Code Playgroud)

但我一直得到一个例外而不是真或假.(例外情况只是'抛出e; // process.nextTick错误,或'首次打勾'错误'事件'

mongodb node.js

47
推荐指数
6
解决办法
4万
查看次数

我如何检查它是否是12字节的String对象,mongodb中的ObjectID?

我想检查正确的 ObjectID 以继续我的代码。我在 NodeJS 上,我不想收到错误:

错误:传入的参数必须是 12 个字节的单个字符串或 24 个十六进制字符的字符串

实际上我得到了这些测试:

if (!user.id || !user.id.match("/^[0-9a-fA-f]{24}$") || !typeof(user.id) === 'string') {
        console.log("user id is required !")
        return callback("user id is required !")
    }
Run Code Online (Sandbox Code Playgroud)

对于 24 个十六进制字符的字符串,我得到了这个正则表达式:

!user.id.match("/^[0-9a-fA-f]{24}$")
Run Code Online (Sandbox Code Playgroud)

我正在搜索检查它是否是一个 12 字节的字符串:

!typeof(user.id) === 'string'
Run Code Online (Sandbox Code Playgroud)

我应该如何添加12字节的验证?

有什么想法吗?

javascript regex string mongodb node.js

2
推荐指数
1
解决办法
4518
查看次数

MongoDB ObjectID 12 字节如何?

据我所知,MongoDB 中的字符串以 UTF-8 格式存储,因此每个字符在 1 到 4 个字节之间。

MongoDB 文档说明了以下关于 ObjectID 的内容

返回一个新的 ObjectId 值。12 字节的 ObjectId 值包括:

一个 4 字节的值表示自 Unix 纪元以来的秒数,
一个 5 字节的随机值和
一个 3 字节的计数器,从一个随机值开始。

在一个例子中,它显示ObjectId("507f1f77bcf86cd799439011"). 这个字符串虽然在 UTF-8 中是 24 个字节,所以我不明白 12 个字节在哪里发挥作用。

mongodb

1
推荐指数
1
解决办法
713
查看次数

标签 统计

mongodb ×4

node.js ×2

javascript ×1

mongoose ×1

regex ×1

string ×1