我试图读取一个字符串值(数据)数组,并使用async.each将每个字符串数据创建到服务器文件中。成功完成该函数后,将调用回调函数以将文件读入formdata并向后端服务发送发布请求。 console.log(response.data)控制台预期的响应,但客户端收到的响应“未定义”,错误为404。服务器不等待async.each完成,并向客户端返回未定义的响应。
我尝试创建一个异步主函数,并将整个async.each代码放入其中,然后等待响应发送回客户端。但是主要功能似乎并没有等待响应,因此功能中的控制台“未定义”。
const { data } = req.body; // array of strings
let parentPath = "./server/files/" ;
let files = [];
let fileName;
const formData = new FormData();
// create folder path if not exists
if (!fs.existsSync(parentPath)) {
fs.mkdirSync(parentPath);
};
// create file from each data string
var asyncWrite = require('async');
asyncWrite.each(
data,
function (fileXML, callback) {
let dataIndex = data.indexOf(fileXML);
fileName = dataIndex + "_" + new Date(Date.now()).toISOString() + ".xml";
files.push(fileName);
console.log("2. writing files: ", fileName);
fs.writeFile(parentPath + "/" + fileName, fileXML, function (err) {
if (err) {
console.log("3.a.error writing file: ", fileName, err);
return callback(err);
}
else {
console.log("3.b. " + fileName + ' was created.');
return callback();
}
});
},
async function (err) {
console.log("4.callback called");
if (err) {
console.log('One of the file failed to process writing: ', err);
return {data: err};
}
else {
let readableStream;
console.log("5.reading files: ");
for (var i = 0; i < files.length; i++) {
readableStream = "";
console.log("6.reading file: ", files[i]);
readableStream = fs.createReadStream(parentPath + "/" + files[i]);
formData.append("files", readableStream, { filename: files[i], contentType: files[i].type });
}
const req = {
method: "post",
url: `${serverUrl}/createItem`,
headers: formData.getHeaders(),
data: formData
};
console.log("7.sending req1: ");
try {
const response = await axios(req);
console.log("8.response: ", response.data);
return response.data;
} catch (error) {
console.log("8.response error: “, error),
return error;
}
}
});
}
}```
actual output:
2. writing files: 0_2019-07-19T04:59:15.695Z.xml
3.b. 0_2019-07-19T04:59:15.695Z.xml was created.
4.callback called
5.reading files:
6.reading file: 0_2019-07-19T04:59:15.695Z.xml
7.sending req1:
8.response: {results: “success”}
Client Error: 404, Not Found
Client Response: undefined