我有一个BSON来自mongoexport数据库的文件。我们假设数据库是todo,集合是items。现在我想将数据离线加载到我的 RN 应用程序中。由于集合可能包含任意多个文档(目前假设有 2 个),因此我想使用一种方法来解析文件,无论它包含多少个文档。
我尝试过以下方法:
bsondump可执行文件。JSON我们可以使用外部命令将文件转换为
bsondump --outFile items.json items.bson
Run Code Online (Sandbox Code Playgroud)
但我正在开发一个移动应用程序,因此在 shell 命令中调用第三方可执行文件并不理想。另外,输出包含多行单行 JSON 对象,因此从技术上讲,输出不是正确的 JSON 文件。所以事后解析并不优雅。
deserialize在js-bson图书馆使用根据js-bson文档,我们可以这样做
const bson = require('bson')
const fs = require('fs')
bson.deserialize(fs.readFileSync(PATH_HERE))
Run Code Online (Sandbox Code Playgroud)
但这会引发错误
Error: buffer length 173 must === bson size 94
Run Code Online (Sandbox Code Playgroud)
并通过添加此选项,
bson.deserialize(fs.readFileSync(PATH_HERE), {
allowObjectSmallerThanBufferSize: true
})
Run Code Online (Sandbox Code Playgroud)
错误已解决,但仅返回第一个文档。因为文档没有提到这个函数只能解析1个文档集合,所以我想知道是否有一些选项可以启用多个文档读取。
deserializeStreamjs-bsonlet docs = []
bson.deserializeStream(fs.readFileSync(PATH_HERE), 0, 2, docs, …Run Code Online (Sandbox Code Playgroud)