Javascript 如何将数据从服务器(node.js)发送到客户端(react.js)?
我最终得到了一个服务器,它提供base64格式的图片。问题是,当我想发送一个base64图像数组时,它们是巨大的 我想把数组分成小块发送到前端。 我使用Sequelize从数据库中检索数据 有人知道怎么做吗 这就是我的端点到目前为止的外观:Javascript 如何将数据从服务器(node.js)发送到客户端(react.js)?,javascript,node.js,stream,sequelize.js,endpoint,Javascript,Node.js,Stream,Sequelize.js,Endpoint,我最终得到了一个服务器,它提供base64格式的图片。问题是,当我想发送一个base64图像数组时,它们是巨大的 我想把数组分成小块发送到前端。 我使用Sequelize从数据库中检索数据 有人知道怎么做吗 这就是我的端点到目前为止的外观: router.get('/download', async (req, res, next) => { try { const getAllStoneData = await StoneData.findAll();
router.get('/download', async (req, res, next) => {
try {
const getAllStoneData = await StoneData.findAll();
const convertBlobToString = getAllStoneData.map((oneStone) => {
const getBuffer = oneStone.dataValues.blobImage;
const convertToString = getBuffer.toString('utf8');
const copyOneStone = {
...oneStone.dataValues,
blobImage: convertToString,
};
return copyOneStone;
});
let chunk = [];
while (convertBlobToString.length > 0) {
chunk = convertBlobToString.splice(0, 1);
res.write(chunk);
}
res.end();
} catch (error) {
res.status(400).send({ error });
}
});
当我运行这个时,我得到的错误是
“UnhandledPromisejectionWarning:Error[ERR\u HTTP\u HEADERS\u SENT]:发送到客户端后无法设置头”您是否检查了错误是否是由于
catch
块造成的?它试图发送一个400响应,但是你可能已经在一个中间。是的,错误出现或不在控制台中。我认为这是第一步。我甚至不确定我写的这个小函数是否适合这样做。我已经发现,但仍然无法正确理解删除res.status时会出现超时!我建议添加一些日志记录,以查看超时时发生的情况。我不再采用这种方法,因为发送数据块对于流式传输或非常大的数据是有意义的。还有一些库,比如socket.io,支持这种特性。不需要自己去实施。也许对于不需要像socket.io这样庞大库的小型项目。如果有人想遵循这个方法进行较小的项目,我也会感兴趣。但是,我现在使用multer只是为了发送回链接,而不是整个文件。