问题描述
我有一个对象数组,单击单个按钮时需要将这些对象存储在数据库中。因此,我使用了 foreach 循环并在循环内进行了 AXIOS POST。 AXIOS 存储相同的信息/对象。数组的所有对象都没有保存有什么解决办法。
let arr = [
{
name:'abc',co: 1
},{
name:'def',co: 2
},{
name:'ghi',co: 3
},];
let fd = new FormData();
arr..forEach((element) => {
fd.append("name",element.name);
fd.append("co",element.co);
this.$http.post("po",fd,{ headers: {
"Content-Type": "multipart/form-data",},.then((res) => {
console.log(res.data);
})
.catch((err) => {
console.log(err);
});
});
按如下方式映射数组时。发生错误cannot read property co of undefined
let element= this.formlist.map((obj) => obj);
// appending data
// axios POST
它只保存最后一个对象。我想要的是每个对象都应该存储
解决方法
我犯的错误是将 Axios 放在 foreach 中,每次循环时都会覆盖对象,因此只存储最后一项。工作解决方案如下
save() {
this.StoreMulti(this.arr,0);
}
StoreMulti(arr,i){
this.$http.post("po",fd,{ headers: {
"Content-Type": "multipart/form-data",},.then((res) => {
if (i < arr.length - 1) {
this.StoreMulti(arr,++i);
}
onsole.log(res.data);
})
.catch((err) => {
console.log(err);
});
}
这个通过一个一个发送POST请求来存储整个数组