Javascript 多阵列本地映像未保存在express或react中

Javascript 多阵列本地映像未保存在express或react中,javascript,node.js,reactjs,mongodb,express,Javascript,Node.js,Reactjs,Mongodb,Express,我有一个MERN应用程序,我正在尝试在本地保存文件,但是,似乎什么都不起作用 我正在尝试上载多个图像的数组 以下是我的代码: collection.js const mongoose=require(“mongoose”); let collectionSchema=newmongoose.Schema({ 标题:{ 类型:字符串, 必填项:true }, 说明:{ 类型:字符串, 必填项:true }, 参考:{ 类型:字符串, 必填项:true }, 图像:[{filename:String

我有一个MERN应用程序,我正在尝试在本地保存文件,但是,似乎什么都不起作用

我正在尝试上载多个
图像的数组

以下是我的代码:

collection.js

const mongoose=require(“mongoose”);
let collectionSchema=newmongoose.Schema({
标题:{
类型:字符串,
必填项:true
},
说明:{
类型:字符串,
必填项:true
},
参考:{
类型:字符串,
必填项:true
},
图像:[{filename:String,mimetype:String,data:Buffer}],
价格:{
类型:数字,
必填项:true
},
年份:数字,
类别名称:{
类型:字符串,
必填项:true
},
售出:{
类型:布尔型,
默认值:false
}
});
collectionSchema.virtual(“类别”{
参考:“类别”,
localField:“名称”,
foreignField:“categoryName”,
justOne:错
});
module.exports=mongoose.model(“collection”,collectionSchema);
CollectionController.js POST方法

/*后期创建集合*/
module.exports.createCollection=[
…验证,
(请求、回复)=>{
//从请求中获取验证错误
常量错误=验证结果(req);
//返回错误
如果(!errors.isEmpty()){
返回res.status(422.json)({error:errors.array()});
}
findOne({u id:req.body.id}).then(函数(集合){
集合。创建({
标题:req.body.title,
描述:req.body.description,
参考:req.body.reference,
图像:req.body.images,
价格:需求主体价格,
年份:请求主体年份,
categoryName:req.body.categoryName,
已售出:req.body.SALLED
})
.然后(函数(集合){
res.status(201).json(集合);
})
.catch(函数(错误){
控制台错误(error);
资源状态(500)。发送(错误);
});
});
}
];
路线

const express=require(“express”);
const router=express.router();
const passport=需要(“护照”);
const collection=require(“../controllers/collectioncontroller”);
const multer=要求(“multer”);
const GridFsStorage=require(“multer gridfs存储”);
常量加密=需要(“加密”);
const authenticate=passport.authenticate(“jwt”{session:false});
//创建存储引擎
const storage=新的GridFsStorage({
url:process.env.MONGODB_URI,
文件:(请求,文件)=>{
返回新承诺((解决、拒绝)=>{
加密随机字节(16,(err,buf)=>{
如果(错误){
退货拒绝(err);
}
const filename=file.originalname;
常量文件信息={
filename:filename,
bucketName:“上传”
};
解决(文件信息);
});
});
}
});
const upload=multer({storage});
router.get(“/”,collection.index);
router.get(“/:id”,collection.getCollection);
//积垢路线
转发器(
“/创建”,
证明…是真实的
上传。单张(“图片”),
collection.createCollection
);
路由器.put(“/:id”,身份验证,集合.updateCollection);
路由器.delete(“/:id”,身份验证,集合.deleteCollection);
module.exports=路由器;
创建组件

import React,{Component}来自“React”;
从“axios”导入axios;
从“sweetalert”导入swal;
从“../../Auth/AuthService”导入AuthService;
从“../../Auth/withAuth”导入withAuth;
const Auth=new AuthService();
类创建扩展组件{
构造函数(){
超级();
此.state={
标题:“,
说明:“,
参考号:“,
图像:[],
价格:“,
年份:“,
类别名称:“”,
类别:[],
销售:假,
标题:“,
描述符:“”,
引用错误:“”,
成像仪:“,
Pricerr:“,
yearErr:“,
分类者:“
};
}
验证=()=>{
让titleErr=“”;
let descriptioner=“”;
let referenceErr=“”;
让imagesErr=“”;
让pricerr=“”;
让Yeerr=“”;
让categoryNameErr=“”;
//标题验证
如果(!this.state.title){
titleErr=“请输入标题”;
}
//描述验证
如果(!this.state.description){
descriptioner=“请输入说明”;
}
//参考验证
如果(!this.state.reference){
referenceErr=“请输入引用”;
}
//图像验证
如果(!this.state.images){
imagesErr=“您必须至少有一个图像”;
}
//价格确认
如果(!this.state.price){
pricerr=“请输入价格”;
}
//年度验证
如果(!this.state.year){
yearr=“请输入年份”;
}
//类别验证
if(!this.state.categoryName){
categoryNameErr=“请输入类别”;
}
//渲染验证
如果(
蒂特勒||
描述符||
参考错误||
成像仪||
普赖塞尔||
耶勒||
类别名称
) {
这是我的国家({
蒂特尔,
描述者,
参考错误,
成像仪,
普赖斯,
呃,
类别名称
});
返回false;
}
返回true;
};
componentDidMount(){
axios
.get(“/api/category”)
.then(res=>this.setState({categorys:res.data}))
.catch(错误=>{
console.log(错误);
});
}
onTitleChange(事件){
this.setState({title:event.target.value});
}
onDescriptionChange(事件){
this.setState({description:event.target.value});
}
onReferenceChange(事件){
this.setState({reference:event.target.value});
}
onImagesChange(事件){
this.setState({images:event.target.value});
}
onPriceChange(事件){
this.setState({price:event.target.value});
}
变化(事件){
this.setState({year:event.target.value});
}
onCategoryNameChange(事件)