gpt4 book ai didi

mysql - 异步调用 fast-csv 中的存储过程

转载 作者:行者123 更新时间:2023-11-30 21:40:45 25 4
gpt4 key购买 nike

我正在用 node.js 编写后端 API,需要用户能够上传包含数据的文件,然后调用存储过程将数据插入 MySQL 的功能。我正在考虑使用 fast-csv 作为解析器,但是我正在努力解决如何在 csv 流中设置对存储过程的调用。这个想法是这样的:

var fs = require("fs");
var csv = require("fast-csv");
var stream1 = fs.createReadStream("files/testCsvFile.csv");

csv
.fromStream(stream2, { headers: true })
.on("data", function(data) {

//CALL TO SP with params from "data"//

numlines++;
})
.on("end", function() {
console.log("done");
});

在应用程序的其他部分,我设置了如下路由:

auth.post("/verified", async (req, res) => {
var user = req.session.passwordless;
if (user) {
const rawCredentials = await admin.raw(getUserRoleCredentials(user));
const { user_end, role } = await normalizeCredentials(rawCredentials);
const user_data = { user_end, role };
res.send(user_data);
} else {
res.sendStatus(401);
}
});

..也就是说 - 路由以异步/等待方式编写,查询(所有调用的存储过程)被定义为 promise ..我想在上传/解析 csv/调用 SP 中为每一行函数遵循这种模式

最佳答案

这是为我完成的工作——你能描述一下如何用你的框架实现它吗——我相信它应该以某种方式完成,我只需要正确配置它就可以了

 //use fast-csv to stream data from a file
csv
.fromPath(form.FileName, { headers: true })
.on("data", async data => {
const query = await queryBuilder({
schema,
routine,
parameters,
request
}); //here we prepare query for calling the SP with parameters from data

winston.info(query + JSON.stringify(data));
const rawResponse = await session.raw(query); //here the query gets executed
fileRows.push(data); // push each row - for testing only
})

.on("end", function() {
console.log(fileRows);
fs.unlinkSync(form.FileName); // remove temp file
//process "fileRows" and respond

res.end(JSON.stringify(fileRows)) // - for testing
});

关于mysql - 异步调用 fast-csv 中的存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51751062/

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