nodejs缓冲区是异步还是同步?

凯文

我在http://nodejs.org/api/buffer.html#buffer_buffer的Buffer文档中没有看到回调我可以安全地认为Buffer是同步的吗?我正在尝试将二进制文件转换为base64编码的字符串。

我最终想要做的是获取一个PNG文件,并将其base64编码的字符串存储在MongoDB中。我读过某个地方,我应该获取PNG文件,使用Buffer转换为base64,然后将此base64输出传递给Mongo。

我的代码如下所示:

fs.readFile(filepath, function(err, data) {
  var fileBuffer = new Buffer(data).toString('base64');
  // do Mongo save here with the fileBuffer ...
});

我有点担心Buffer是同步的,因此在进行base64编码时会阻塞其他请求。如果是这样,是否有更好的方法将二进制文件转换为以base64编码的二进制文件以存储在Mongo中?

内森·弗里德利

它是同步的。您可以通过切片Buffer并一次转换少量并在其间调用process.nextTick()或在子进程中运行它来使其异步-但我不建议使用这两种方法。

相反,我建议不要将图像存储在数据库中,而是将它们存储在磁盘上,或者存储在诸如Amazon S3之类的文件存储服务中,然后仅将文件路径或URL存储在数据库中。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

nodejs缓冲区是异步还是同步?

来自分类Dev

多个缓冲区还是单个缓冲区?

来自分类Dev

关于NodeJS缓冲区

来自分类Dev

是否有诸如“单个项目大小的异步任务缓冲区”之类的同步工具?

来自分类Dev

NodeJS缓冲区-读取小端缓冲区

来自分类Dev

在C#中同步缓冲区

来自分类Dev

Neovim异步缓冲区等待

来自分类Dev

Neovim异步缓冲区等待

来自分类Dev

NodeJS缓冲区从字节读取位

来自分类Dev

转换NodeJS字节缓冲区

来自分类Dev

nodejs zlib 使 hexa 缓冲区膨胀

来自分类Dev

在更新命令缓冲区的情况下,vulkan命令缓冲区同步

来自分类Dev

kmalloc中的缓冲区还是DMA安全缓冲区吗?

来自分类Dev

使用单个顶点缓冲区还是多个顶点缓冲区?

来自分类Dev

使用单个顶点缓冲区还是多个顶点缓冲区?

来自分类Dev

Nodejs如何知道同步还是异步

来自分类Dev

如何同步多线程OpenGL缓冲区访问?

来自分类Dev

是否可以将流同步转换为缓冲区?

来自分类Dev

Vulkan中命令缓冲区之间的同步

来自分类Dev

同步Metal中的统一缓冲区更新

来自分类Dev

从jni返回的字节缓冲区是副本还是引用?

来自分类Dev

绑定帧缓冲区还是设置ReadBuffer?

来自分类Dev

WebGL;缓冲区还是uniform4fv?

来自分类Dev

Python异步缓冲区和进程数据

来自分类Dev

异步聊天服务器缓冲区问题

来自分类Dev

异步js的eachSeries中的缓冲区溢出

来自分类Dev

加速异步服务器缓冲区错误

来自分类Dev

异步读取完成,但缓冲区不包含预期结果

来自分类Dev

在异步回调中从 NetworkStream 读取缓冲区