用graphql提供图像

时间:2019-05-28 14:56:30

标签: graphql express-graphql

我有一个由 express-graphql 构建的 graphql 服务器,并且我使用mongoDb将图像存储在普通数据库中,因为它们的大小<16MB。

我有 react android 应用。将这些图像提供给客户的最佳方法是什么。

在我的模式中,我有类似的东西。

const productSchema = new Schema({
views: {type: Number, default: 0},
//Storing only thumbnail in this document.
thumbnail: {data: Buffer, contentType: String},

}); 在我的架构中,我有类似

const productType = new GraphQLObjectType({
    name: 'Product',
    fields: () => ({
        //.........
        thumbnail: {type: 'WHAT TO DO HERE'},
        views: {type: new GraphQLNonNull(GraphQLInt)}
        //.........
    }),
});

编辑: 我创建了这样的路由器。

router.get('/t/:productId', function (req, res) {
    const productId = req.params.productId;

    Product.findById(productId, {thumbnail: true}).then(thumbnail => {
        res.contentType(thumbnail.contentType);
        res.end(thumbnail.data, "binary");
    }).catch(e => {
        console.error(e);
        res.sendStatus(404);
    });
});

1 个答案:

答案 0 :(得分:0)

GraphQL.js响应被序列化为JSON,这意味着您不能提供图像。您可以返回表示图像的URL或Base64编码的字符串,如in this answer所述。不管哪种方式,您字段的类型都是GraphQLString