gpt4 book ai didi

javascript - 中间件出现问题,无法发布到/api/upload

转载 作者:行者123 更新时间:2023-12-02 23:09:20 25 4
gpt4 key购买 nike

我正在开发一个小型导入系统。用户从前端上传文件,Nodejs 处理该文件并解析 csv 中的数据并插入到数据库中。

我有不同的中间件来处理请求。我想首先授权用户,其次上传数据并将数据提取到 req.data,最后我想发送完成请求的响应。

app.post('/api/upload', auth, upload.single("file"),  (req, res, next) =>{
let steam = fs.ReadStream(req.file.path);
csvtojson()
.fromStream(steam)
.then( function(data){
req.data = data;
});
next();
}, doImport);

这些是中间件:

function auth(req, res, next) {
console.log("Authorizing");
next();
}

function doImport(req, res, next){
console.log("importing Data");
console.log(req.data);
res.send(req.data);
}

错误是:

   []

空数组

最佳答案

您当前正在尝试调用next()之前req.data已填充,因此您的中间件正在发送空数组。请记住,如果您需要确定某行在异步操作完成后运行,则需要将该行放在适当的位置(在本例中为 .then() block 内):

app.post('/api/upload', auth, upload.single("file"),  (req, res, next) =>{
let steam = fs.ReadStream(req.file.path);
csvtojson()
.fromStream(steam)
.then( function(data){
req.data = data;
next() //
}).catch(err => next(err));
}, doImport);

如图所示,您还应该处理错误,因为如果不这样做并且抛出错误,您的请求将超时(不会调用 next() )。

关于javascript - 中间件出现问题,无法发布到/api/upload,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57448487/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com