2017-04-18 66 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(所以我發現你的問題尋找一個解決方案)。

相關問題