“偏移”的值超出范围。必须为> = 0 && <= 17825792

时间:2020-04-02 16:50:45

标签: node.js reactjs mongodb mongoose bson

A = [10, 15]

我一直在向我的后端发送axios.post和有效载荷的数据和文件,我以base64的形式捕获文件并弹出包含“ data / png base64;”的前字母。 当我尝试使用base64数据创建新实例时,在尝试使用mongoose将文档保存到mongodb时遇到以下错误,我徒劳地看了这个错误,文件太大了吗?

1 个答案:

答案 0 :(得分:2)

对于那些有同样问题的人。我有一些额外的信息,经过一些测试后,我得出以下结论:

当您发出 MongoDB 插入请求以更改对象使其大于最大允许大小 (16mb) 时,您将收到以下错误:

MongoError: BSONObj size: 20971588 (0x1400044) is invalid. Size must be between 0 and 16793600(16MB) First element: _id: ObjectId('60a277f50a5f8b012a761672')
    at Function.create ...
    {
  driver: true,
  index: 0,
  code: 10334
}    

当您执行过大的 MongoDB 查询 时(如问题中所示)。您将看到以下错误:

RangeError [ERR_OUT_OF_RANGE]: The value of "offset" is out of range. It must be >= 0 && <= 17825792. Received 17825794
    at validateOffset (buffer.js:104:3)
    at Buffer.write (buffer.js:1055:5)
    ... {
  code: 'ERR_OUT_OF_RANGE'
}

这很重要,因为如果您执行例如插入或更新 10mb 数据的 upsert,您的查询将超过查询的最大 ~17mb。 (不完全确定这是开发人员的意图)

最后,当您执行的插入超过最大查询大小,但确实超过最大 BSON 文档大小时,您将看到此错误:

MongoError: object to insert too large. size in bytes: 16777272, max size: 16777216
    at Function.create ...
     {
  driver: true,
  index: 0,
  code: 2
}

这是用以下方法测试的:

  • 节点 v14.16.0
  • MongoDB 节点模块 v3.6.4

我希望这能帮助任何遇到这个问题的人。