показ изображений с помощью GraphQL - PullRequest
0 голосов
/ 28 мая 2019

У меня есть сервер graphql , созданный express-graphql , и я использую mongoDb для хранения изображений в обычной коллекции базы данных, поскольку они <16 МБ. </p>

У меня реагирует и 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)}
        //.........
    }),
});

Edit: Я создал такой роутер.

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 голосов
/ 28 мая 2019

Ответы GraphQL.js сериализуются как JSON, что означает, что вы не можете подавать изображений с ним.Вы можете вернуть либо URL, либо строку в кодировке Base64, представляющую изображение, как описано в этом ответе .В любом случае тип вашего поля будет GraphQLString.

...