Mongodb Meteor.methods()将数组转换为对象

Mongodb Meteor.methods()将数组转换为对象,mongodb,meteor,buffer,blob,html5-audio,Mongodb,Meteor,Buffer,Blob,Html5 Audio,我正在Meteor.js中使用该库,并尝试将立体声音频缓冲区存储到MongoDB 在客户机上,console.log(buffers)给出了表单的数组 [Float32Array, Float32Array] 但是在将其传递给Meteor.methods和Meteor.call('newSound',buffers)方法之后 Meteor.methods({ newSound: function(buffers) { console.log(buffers);

我正在Meteor.js中使用该库,并尝试将立体声音频缓冲区存储到MongoDB

在客户机上,
console.log(buffers)
给出了表单的数组

[Float32Array, Float32Array]
但是在将其传递给Meteor.methods和Meteor.call('newSound',buffers)方法之后

Meteor.methods({
    newSound: function(buffers) {
        console.log(buffers);
    }
}
我得到的数组如下所示:

[Object, Object]
为什么Meteor会将阵列转换为对象?检索时,我需要将数据用作数组缓冲区,并可以使用

var buffers = new Array(
    _.toArray(buffers[0]),
    _.toArray(buffers[1])
);

但我关心的是表现。我应该在将缓冲区存储到数据库之前将其转换为blob,然后在检索它们时重新转换吗?

只有与EJSON兼容的类型会自动从JSON对象转换为实际的JavaScript类型。在这里阅读关于EJSON的内容:

我不相信Meteor团队已经让EJSON兼容了
Float32Array
。有关EJSON以及如何使类型兼容的更多信息,请观看以下视频:


还有一些可能对您有所帮助。

谢谢,我不知道从哪里开始。文档说EJSON支持“
JavaScript Uint8Array
EJSON.newBinary
”的结果。我发现了一篇关于MDN的有用文章,解释了JavaScript中的类型化数组:。我没有理解的是,这些数组实际上是相同二进制数据的不同视图。