2017-04-18 22 views
3

ExpressでホストされているGraphQLサーバがあります。私はnodejsバッファオブジェクトを送り返して、クライアントにイメージを返したい。私はどのようにjsonの代わりに、バイトを返すようにgraphqlサーバを設定できますか?イメージはサイズが大きいので、私はbase64を通してこれをしたくありません。GraphQLを使用してバイナリデータをクライアントに返信する方法

+0

なぜ単にURL文字列を返さないのはなぜですか? GraphQL上のファイルをストリーミングすることは不自然なようです。 –

+0

そうだね、graphqlはjsonしか返せません。私はこれを解決するために、別のwebsocketチャンネル(graphqlを使用しない)を作成し、リクエスト引数をサーバに送信します。 – user3162979

答えて

0

JSONを返す必要がありますが、まだ方法があります。 GraphQLを使用して、従来のSQLデータベースのBLOBフィールドに格納されているイメージを返します。 sequelize、graphql-sequelize、graphql-jsを使用しています。 BlobフィールドはGraphqlスキーマのString型に定義されているので、jsonの返信でうまくいきます。 はその後、我々は

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

唯一の問題は、我々は今graphqlインタフェースを介してデータベースに再度画像データを保存するトラブルを抱えているされるように、配信する前にバッファに変換します。私たちの突然変異関数は、\ U0000やその他のような文字列中のある種の悪いUnicode文字を見つけたら構文エラーを出します(そのために解決策を探すあなたの質問を見つけました)。

関連する問題