Javascript 如何在indexeddb中存储/获取由字符串和Darray(音频/视频)组成的大数据

Javascript 如何在indexeddb中存储/获取由字符串和Darray(音频/视频)组成的大数据,javascript,local-storage,blob,indexeddb,Javascript,Local Storage,Blob,Indexeddb,我在indexedDb中以串行方式存储字符串和二进制数据的混合,类似于 var mainData = [ {d : string}, {d : string}, {d : typedArray}, {d : typedArray}, {d : typedArray}, {d : string}, {d : string} ]; var myblob = new Blob([stringifyData], {type: "applicati

我在indexedDb中以串行方式存储字符串和二进制数据的混合,类似于

var mainData = [
    {d : string},
    {d : string},
    {d : typedArray},
    {d : typedArray},
    {d : typedArray},
    {d : string},
    {d : string}
];
var myblob = new Blob([stringifyData], {type: "application/json"});
var myblob = new Blob(mainData,  {type: 'application/octet-binary'}
现在我需要将这个数据从indexedDb转换成blob文件,并让用户下载这个文件

从这个导出的文件中,我需要原始格式的完整数据

字符串化方式

如果我将这些数据转换为blob文件作为JSON,方法如下

var mainData = [
    {d : string},
    {d : string},
    {d : typedArray},
    {d : typedArray},
    {d : typedArray},
    {d : string},
    {d : string}
];
var myblob = new Blob([stringifyData], {type: "application/json"});
var myblob = new Blob(mainData,  {type: 'application/octet-binary'}
文件的大小将是非常大的,这对我的情况是没有用处的

键入Darray方式

我无法将此数据转换为blob文件,例如

var mainData = [
    {d : string},
    {d : string},
    {d : typedArray},
    {d : typedArray},
    {d : typedArray},
    {d : string},
    {d : string}
];
var myblob = new Blob([stringifyData], {type: "application/json"});
var myblob = new Blob(mainData,  {type: 'application/octet-binary'}
这不起作用,因为indexedDb中存在字符串和类型化数组的混合未来数据

mainData应该是值的数组(typedArray),而不是对象的数组

所以我的问题是

  • 如何将indexDb中的混合数据(字符串和二进制)导出为blob文件,以便以后以原始格式使用这些数据
  • 是否有任何方法(也可以是其他客户端存储)可以满足我的要求
    您似乎在问两个不同的问题:(1)如何将已保存的数据从索引数据库(或其他存储API)读取到live JS数据结构中(2)如何有效地将live JS数据结构序列化到Blob/文件中,然后将Blob/文件反序列化回live JS数据结构不清楚您是否对#1有问题,但如果你把它们混为一谈,那么解决第二个问题将更加困难。