使用 Nodejs 在 Mongodb 中导入文件

use*_*er1 5 mongodb node.js

使用 Nodejs 在 Mongodb 中导入 16.9 MB 的 json 文件会引发以下错误:

Opening new mongodb connection Closing mongodb connection, force = true { error: RangeError [ERR_OUT_OF_RANGE]: The value of "offset" is out of range。它必须 >= 0 && <= 17825792。收到 17825795 js:347:18) { code: 'ERR_OUT_OF_RANGE' } } ERROR (node:28432) UnhandledPromiseRejectionWarning: RangeError [ERR_OUT_OF_RANGE]: "offset" 的值超出范围。它必须 >= 0 && <= 17825792。在 Buffer.write (buffer.js:1007:5) 处的 serializeNumber (/home/igor/node_modules/bson/lib/bson/parser/serializer.js:63: 处收到 17825795: 18) 在 serializeInto (/home/igor/node_modules/bson/lib/bson/parser/serializer.js:711:17) 在 serializeObject (/home/igor/node_modules/bson/lib/bson/parser/serializer.js: 347:18) 在 serializeInto (/home/igor/node_modules/bson/lib/bson/parser/serializer.js:937:17) 在 serializeObject (/home/igor/node_modules/bson/lib/bson/parser/serializer. js:347:18) 在 serializeInto (/home/igor/node_modules/bson/lib/bson/parser/serializer.js:937: 17) 在 serializeObject (/home/igor/node_modules/bson/lib/bson/parser/serializer.js:347:18) 在 serializeInto (/home/igor/node_modules/bson/lib/bson/parser/serializer.js: 937:17) 在 serializeObject (/home/igor/node_modules/bson/lib/bson/parser/serializer.js:347:18) (node:28432) UnhandledPromiseRejectionWarning:未处理的承诺拒绝。这个错误要么是因为在没有 catch 块的情况下抛出了异步函数,要么是因为拒绝了一个没有用 .catch() 处理过的承诺。(rejection id: 2) (node:28432) [DEP0018] DeprecationWarning:不推荐使用未处理的承诺拒绝。将来,未处理的承诺拒绝将使用非零退出代码终止 Node.js 进程。18) 在 serializeInto (/home/igor/node_modules/bson/lib/bson/parser/serializer.js:937:17) 在 serializeObject (/home/igor/node_modules/bson/lib/bson/parser/serializer.js: 347:18) (node:28432) UnhandledPromiseRejectionWarning:未处理的承诺拒绝。这个错误要么是因为在没有 catch 块的情况下抛出了异步函数,要么是因为拒绝了一个没有用 .catch() 处理过的承诺。(rejection id: 2) (node:28432) [DEP0018] DeprecationWarning:不推荐使用未处理的承诺拒绝。将来,未处理的承诺拒绝将使用非零退出代码终止 Node.js 进程。18) 在 serializeInto (/home/igor/node_modules/bson/lib/bson/parser/serializer.js:937:17) 在 serializeObject (/home/igor/node_modules/bson/lib/bson/parser/serializer.js: 347:18) (node:28432) UnhandledPromiseRejectionWarning:未处理的承诺拒绝。这个错误要么是因为在没有 catch 块的情况下抛出了异步函数,要么是因为拒绝了一个没有用 .catch() 处理过的承诺。(rejection id: 2) (node:28432) [DEP0018] DeprecationWarning:不推荐使用未处理的承诺拒绝。将来,未处理的承诺拒绝将使用非零退出代码终止 Node.js 进程。这个错误要么是因为在没有 catch 块的情况下抛出了异步函数,要么是因为拒绝了一个没有用 .catch() 处理过的承诺。(rejection id: 2) (node:28432) [DEP0018] DeprecationWarning:不推荐使用未处理的承诺拒绝。将来,未处理的承诺拒绝将使用非零退出代码终止 Node.js 进程。这个错误要么是因为在没有 catch 块的情况下抛出了异步函数,要么是因为拒绝了一个没有用 .catch() 处理过的承诺。(rejection id: 2) (node:28432) [DEP0018] DeprecationWarning:不推荐使用未处理的承诺拒绝。将来,未处理的承诺拒绝将使用非零退出代码终止 Node.js 进程。

我想在 Mongodb 中插入数据时会发生错误:

...

const readFilePromise = promisify(fs.readFile);
const fileData: IOecdMigFile =JSON.parse(await readFilePromise(filePath, "utf8"));
await dropCollectionPromise("test_collection");
await insertPromise("test_collection",fileData);
...


export function insertPromise(
    collection: string,
    record: object
): Promise<void> {
    return _mongoProxy
        .connect()
        .then((db: mongo.Db) => db.collection(collection))
        .then((c: mongo.Collection) => c.insertOne(record))
        .then(async (_result: any) => {
            // console.log(result);
            await _mongoProxy.close();
        })
        .catch(async (err) => {
            await _mongoProxy.close(true);
            console.log({ error: err }, "ERROR");
            throw err;
        });
}

Run Code Online (Sandbox Code Playgroud)