【问题标题】:Reading local BSON file in Javascript用Javascript读取本地BSON文件
【发布时间】:2020-08-09 12:33:46
【问题描述】:

我有一个 HTML 5 游戏。我正在使用 webpack/typescript 进行开发。

我有一些数据,我使用require 将其包括在内,如下所示

    const dataJson = require('scripts/data/data.json');

我想做同样的事情,除了 bson。我尝试了做这样的天真的方法

    const dataJson = require('scripts/data/data.bson');

但这当然会失败,因为没有加载器(不会用currently no loaders are configured to process this file. 编译)。

然后我想在本地包含文件,加载文件,然后反序列化 bson。或者我想在使用require 时嵌入bson。这是一些工具生成的数据,所以它会在一个数据文件中。

我还没弄明白。我试过以下。但这会导致result 包含Filebits 或看起来像内容类型的内容(如果以readAsDataURL 完成)。

我尝试过的

    const file = new File(['data'], 'assets/data.bson', { type: 'application/bson' });
    const reader = new FileReader();
    reader.onload=(theFile) => {
        if (theFile.target) {
            console.log(theFile.target.result);
        }

    } ;
    reader.readAsDataURL(file);
    //reader.readAsBinaryString(file);

加载本地二进制文件的正确方法是什么?大概,一旦我有了数据,我就可以从bson 包中调用deserialize

好的,我在这里添加一些更正。 我读取文件的方法是错误的。我知道File 实际上会创建一个文件。因此,当它被传递给FileReader 时,它会获取传入的两个bits 的值。

我发现我可以通过两种方式获取本地文件。我可以使用XMLHttpRequest 以及raw-loader 加载程序。

但是一旦我这样做了。我似乎无法使用 bson 将内容转换为 JSON。 deserializeserializeparsestringify 的任何变体都有一些问题。

是否有人碰巧有正确的方法将 BSON 内容转换为 Javascript 对象?

请注意,BSON 是使用 pymongo 从 python 生成的。我生成 BSON 的代码如下。

            with open(args.output_bson, 'wb') as fp:
                encoded = bson.encode(data_meta.to_dict())
                fp.write(encoded)

to_dict 是一本字典。我输出 JSON(使用 json)和 BSON。

我还使用bsondump 测试了该文件,它确实转换为 JSON。所以看起来我加载的文件是有效的。

【问题讨论】:

  • 你明白了吗?

标签: javascript bson


【解决方案1】:

你可以使用bson

然后调用:

BSON.deserialize(theFile.target.result);

【讨论】:

  • 感谢您的回复。不幸的是,这不起作用。我用新的发现更新了我的问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-24
  • 2012-02-17
  • 1970-01-01
  • 2018-07-09
  • 1970-01-01
相关资源
最近更新 更多