[英]Express GraphQL - upload files
我正在创建我的 Express-GraphQL api,我可以将所有内容存储在 MongoDB 中。 我正处于这样的地步:
项目 Mongo model:
const { Schema, model } = require("mongoose");
const projectSchema = new Schema({
name: {
type: String,
require: true,
},
offer: [{ type: String }],
});
module.exports = model("Project", projectSchema);
我删除了除这 2 个以外的所有字段。字段报价必须是文件数组 - 例如,您可以有 2-3 个 pdf。
在我的类型中,我创建了项目类型:
const Project = new GraphQLObjectType({
name: "Project",
fields: () => ({
_id: { type: GraphQLNonNull(GraphQLString) },
name: { type: GraphQLNonNull(GraphQLString) },
offer: { type: GraphQLList(GraphQLString) },
}),
});
我想知道有没有一种方法可以创建可以在此报价字段中添加/上传文件的突变?
editProject: {
type: Project,
args: {
projectId: { type: GraphQLNonNull(GraphQLString) },
offer: { type: GraphQLList(GraphQLString) },
},
async resolve(parentValue, args) {
//some code here
},
},
如果我有这样的突变,我应该如何传递文件? 如果有人以前做过这样的事情,我将非常感谢分享我的经验:
非常感谢!
我已经使用 graphql 将近 2 年了。 当你面临这个问题时,我们也为此挠了挠头,直到我们发现你不能真正在突变查询中传递文件,但你可以做的是将文件从前端直接上传到云像 AWS S3 这样的服务,并在您的突变查询中传递 object 键以将其保存在您的数据库中。 要从 S3 再次获取它,您可以使用相同的密钥。 这样,您就不会在后端处理文件,并且仍然可以通过在前端呈现或下载的有效方式来保证它们的安全。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.