web-dev-qa-db-ja.com

GraphQLを使用してクライアントにバイナリデータを送信する方法

ExpressでホストされているGraphQLサーバーがあります。 nodejsバッファオブジェクトを送り返すことでクライアントに画像を返したいのですが。 jsonの代わりにバイトを返すようにgraphqlサーバーを構成するにはどうすればよいですか?画像のサイズが大きいので、base64でこれを実行したくありません。

17
user3162979

JSONを返す必要がありますが、方法はまだあります。従来のSQLデータベースのBlobフィールドに保存されている画像を返すために、GraphQLを使用しています。 sequelize、graphql-sequelize、graphql-jsを使用しています。ここでは、graphqlスキーマでBlobフィールドを文字列型として定義しているため、json応答で問題なく通過します。次に、配信する前にバッファに変換します。

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

唯一の問題は、graphqlインターフェースを介して画像データをデータベースに保存できないという問題です。ミューテーション関数は、\ U0000やwhatnotなどの文字列で特定の不良Unicode文字を検出すると、構文エラーを発生させます(そのため、解決策を探している質問を見つけました)。

6
steev