NodeJS 如何处理来自NextJS后端API的Buffer

icnyk63a  于 2023-05-28  发布在  Node.js
关注(0)|答案(1)|浏览(147)

我有一个NextJS应用程序,其中一个后端API路由返回包含buffer的JSON对象。

// nodeConfiguration has a nodeId property which is a buffer
res.status(200).json(nodeConfiguration);

当我在前端收到这个响应时,我试图输出nodeIddata.nodeId.toString()),但显示的是[object Object]
我试着检查我是否真的在前端得到了一个缓冲区:

console.log(data.nodeId);

在dev控制台上,我得到了这个:

nodeId: {type: 'Buffer', data: Array(8)}

但是当我使用isBuffer()检查时:

Buffer.isBuffer(data.nodeId) ? 'buffer' : 'not buffer';

我得到的不是缓冲。我很困惑,我不明白这里发生了什么。我做错了什么,我如何正确地传递一个缓冲区和后端?

jdg4fx2g

jdg4fx2g1#

根据这个文档:
Buffer类是JavaScript的Uint8Array类的一个子类,并使用覆盖其他用例的方法对其进行扩展。
最后,我阅读了它的文档,显然我可以做这样的事情:

// @ts-ignore
const uint8array = new Uint8Array(node.nodeId.data);
console.log(new TextDecoder().decode(uint8array));

我必须添加@ts-ignore,因为在Typescript看来,nodeId是一个缓冲区,它没有data属性。这最终给出了缓冲区的字符串表示形式。

相关问题