我有一个由 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);
});
});
答案 0 :(得分:0)
GraphQL.js响应被序列化为JSON,这意味着您不能提供图像。您可以返回表示图像的URL或Base64编码的字符串,如in this answer所述。不管哪种方式,您字段的类型都是GraphQLString
。