2017-04-18 70 views
3

我有一个特快专递的GraphQL服务器。我想通过发回nodejs缓冲区对象将图像返回给客户端。我如何配置graphql服务器,返回字节,而不是json?我不希望通过base64来做到这一点,因为图像尺寸很大。如何使用GraphQL将二进制数据发送回客户端

+0

为什么不简单地返回一个URL字符串?通过GraphQL流式处理文件看起来不自然。 –

+0

yep似乎是这样,graphql只能返回json。我设法解决这个问题,创建另一个websocket通道(不使用graphql),并将我的请求参数发送到服务器。 – user3162979

回答

0

您必须返回JSON,但仍然有办法。我们使用GraphQL来返回保存在传统SQL数据库中的Blob字段中的图像。我们使用了sequelize,graphql-sequelize和graphql-js。 我们已经将Blob字段定义为我们的graphql模式中的字符串类型,所以他们通过json回复就可以了。 然后我们转换为缓冲递交之前,像

const imgBuffer = new Buffer.from(imgObj.data, 'ascii');

唯一的问题是我们现在遇到问题通过graphql界面保存图像数据到数据库中。我们的变异函数在字符串中找到某些错误的unicode字符时会给我们一个语法错误,例如\ U0000和whatnot(所以我发现你的问题寻找一个解决方案)。

相关问题