如何使用GraphQL将二进制数据发送回客户端

use*_*979 16 javascript node.js graphql

我有一个GraphQL服务器,托管在express上.我想通过发回nodejs缓冲区对象将图像返回给客户端.如何配置graphql server,返回字节,而不是json?我不希望通过base64这样做,因为图像很大.

ste*_*eev 6

您必须返回 JSON,但仍有办法。我们使用 GraphQL 返回存储在旧版 sql 数据库中的 Blob 字段中的图像。我们正在使用 sequelize、graphql-sequelize 和 graphql-js。我们已经在我们的 graphql 模式中将 Blob 字段定义为字符串类型,因此它们可以很好地通过 json 回复。然后我们在交付之前转换为缓冲区,例如

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

唯一的问题是我们现在无法通过 graphql 接口将图像数据保存回数据库。我们的变异函数在字符串中发现某些错误的 unicode 字符时会给我们一个语法错误,比如 \U0000 等等(所以我发现你的问题正在寻找解决方案)。