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

Moh*_*mel 9 mongoose mongodb node.js bson reactjs

    You have triggered an unhandledRejection, you may have forgotten to catch a Promise rejection:
 RangeError [ERR_OUT_OF_RANGE]: The value of "offset" is out of range. It must be >= 0 && <= 17825792. Received 17825796
     at Buffer.write (buffer.js:1019:5)
     at serializeObjectId (/home/ubuntu/workspace/assurance-api/node_modules/bson/lib/bson/parser/serializer.js:274:14)
     at serializeInto (/home/ubuntu/workspace/assurance-api/node_modules/bson/lib/bson/parser/serializer.js:935:17)
     at serializeObject (/home/ubuntu/workspace/assurance-api/node_modules/bson/lib/bson/parser/serializer.js:347:18)
     at serializeInto (/home/ubuntu/workspace/assurance-api/node_modules/bson/lib/bson/parser/serializer.js:727:17)
     at serializeObject (/home/ubuntu/workspace/assurance-api/node_modules/bson/lib/bson/parser/serializer.js:347:18)
     at serializeInto (/home/ubuntu/workspace/assurance-api/node_modules/bson/lib/bson/parser/serializer.js:941:17)
     at BSON.serialize (/home/ubuntu/workspace/assurance-api/node_modules/bson/lib/bson/bson.js:64:28)
     at Msg.serializeBson (/home/ubuntu/workspace/assurance-api/node_modules/mongodb/lib/core/connection/msg.js:126:22)
     at Msg.makeDocumentSegment (/home/ubuntu/workspace/assurance-api/node_modules/mongodb/lib/core/connection/msg.js:118:33)
     at Msg.toBin (/home/ubuntu/workspace/assurance-api/node_modules/mongodb/lib/core/connection/msg.js:104:25)
     at MessageStream.writeCommand (/home/ubuntu/workspace/assurance-api/node_modules/mongodb/lib/cmap/message_stream.js:55:28)
     at Connection.write (/home/ubuntu/workspace/assurance-api/node_modules/mongodb/lib/cmap/connection.js:361:26)
     at _command (/home/ubuntu/workspace/assurance-api/node_modules/mongodb/lib/core/wireprotocol/command.js:128:10)
     at command (/home/ubuntu/workspace/assurance-api/node_modules/mongodb/lib/core/wireprotocol/command.js:28:5)
     at writeCommand (/home/ubuntu/workspace/assurance-api/node_modules/mongodb/lib/core/wireprotocol/write_command.js:47:3)
Run Code Online (Sandbox Code Playgroud)

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

Mil*_*lan 31

您的 MongoDB 查询太大。当您的搜索或更新查询超过 17.825.792 字节时,就会发生这种情况。


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

当您发出 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
}    
Run Code Online (Sandbox Code Playgroud)

当您执行太大的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'
}
Run Code Online (Sandbox Code Playgroud)

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

最后,当您执行的插入超过最大查询大小,但超过最大 BSON 文档大小时,您将出现以下错误:

MongoError: object to insert too large. size in bytes: 16777272, max size: 16777216
    at Function.create ...
     {
  driver: true,
  index: 0,
  code: 2
}
Run Code Online (Sandbox Code Playgroud)

这是用以下方法测试的:

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

我希望这对任何提出这个问题的人都有帮助。