web-dev-qa-db-fra.com

Comment renvoyer des données binaires au client à l'aide de GraphQL

J'ai un serveur GraphQL, hébergé sur express. Je veux retourner des images au client en renvoyant des objets tampons nodejs. Comment puis-je configurer le serveur graphql, pour retourner des octets, au lieu de json? Je ne souhaite pas le faire via base64, car l'image est de grande taille.

17
user3162979

Vous devez retourner JSON, mais il y a encore un moyen. Nous utilisons GraphQL pour renvoyer des images stockées dans des champs Blob dans une base de données SQL héritée. Nous utilisons sequelize, graphql-sequelize et graphql-js. Nous avons défini les champs Blob comme des types de chaîne dans notre schéma graphql et ils apparaissent donc très bien dans la réponse json. Ensuite, nous convertissons en tampon avant de livrer, comme

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

Le seul problème est que nous avons maintenant du mal à sauvegarder les données d'image dans la base de données via l'interface graphql. Notre fonction de mutation nous donne une erreur de syntaxe lorsqu'elle trouve certains mauvais caractères unicode dans les chaînes, comme\U0000 et ainsi de suite (j'ai donc trouvé votre question à la recherche d'une solution à cela).

6
steev