我在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,然后在检索它们时重新转换吗?
答案 0 :(得分:1)
只有EJSON兼容类型才会自动从JSON对象转换为实际的JavaScript类型。在这里阅读EJSON:
我不相信Meteor团队已将Float32Array
与EJSON兼容。有关EJSON以及如何使类型兼容的更多信息,请观看以下视频:
还有EJSON.newBinary()
可能对您有所帮助。