Meteor.methods()将Float32Array转换为Object

时间:2014-02-28 08:06:54

标签: mongodb meteor buffer blob html5-audio

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

在客户端上,console.log(buffers)提供了一个表单数组

[Float32Array, Float32Array]

但是在使用方法

Meteor.call('newSound', buffers)传递给Meteor.methods之后
Meteor.methods({
    newSound: function(buffers) {
        console.log(buffers);
    }
}

我得到一个这样的数组:

[Object, Object]

为什么Meteor将数组转换为对象?检索后,我需要将数据作为数组缓冲区使用,并可以使用

重新转换它们
var buffers = new Array(
    _.toArray(buffers[0]),
    _.toArray(buffers[1])
);

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

1 个答案:

答案 0 :(得分:1)

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

http://docs.meteor.com/#ejson

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

还有EJSON.newBinary()可能对您有所帮助。