为什么console.log(theFile)能输出数据,而不能保存到dateArray数组中。如果要保存到dataArray数组中,是不是也要构造一个异步函数code var dataArray = []; for(let i = 0; i < files.iconImage.length; i++) { // var iconFile = files.iconImage[i]; if(files.iconImage[i].size !== 0){ fs.readFile(files.iconImage[i].path, function(err, data){ if(err) { return res.send('读取文件失败'); } var theFile = new AV.File(files.iconImage[i].originalFilename, data); theFile.save().then(function(theFile){ console.log(theFile); dataArray.push(theFile); }).catch(console.error); }); } else { res.send('请选择一个文件。'); } } res.json({ success: true, data: dataArray }) });
1 回答
幕布斯7119047
TA贡献1794条经验 获得超8个赞
可以使用 Promse.all 获取所有数据,并在 then 里 res.json
思路供参考
Promise.all(
files.iconImage
.filter(icon => icon.size !== 0)
.map(icon => new Promise((resolve, reject) => {
fs.readFile(icon.path, (err, data) => {
if (err) { return reject('读取文件失败') }
resolve(new AV.File(icon.originalFilename, data).save())
})
}))
)
.then(dataArray => res.json({success: true, data: dataArray}))
.catch(error => res.send(error))
添加回答
举报
0/150
提交
取消