如何解决有没有办法将 csv 从 mysql 直接流式传输到我的下载路线,这样就不需要在两者之间存储 csv?
这里是 dlstream.js
const express = require('express')
const app = express.Router()
app.get('/',(req,res) => {
let id = req.query.id
if(!id || String(id).length === 0) return res.redirect('/404')
let gen = ((String(req.query.gen) !== "1") && (String(req.query.gen) !== "2")) ? "1" : req.query.gen
let dup = ((req.query.dup !== "true") && (req.query.dup !== "false")) ? "true" : req.query.dup
let sql
if(gen === "1") {
if(dup === "true") {
sql = req.sql.gen1.dup(id)
} else {
sql = req.sql.gen1.nodup(id)
}
} else {
if(dup === "true") {
sql = req.sql.gen2.dup(id)
} else {
sql = req.sql.gen2.nodup(id)
}
}
let pool = req.MysqL.createPool({
连接限制:1000,
连接超时:60 * 60 * 1000,
accquireTimeout: 60 * 60 * 1000,超时:60 * 60 * 1000,
主机:req.config.MysqL.host,
用户:req.config.MysqL.user,
密码:req.config.MysqL.password,
数据库:req.config.MysqL.database,
端口:req.config.port
})
pool.getConnection((err,con) => {
如果(错误){
控制台错误(错误)
返回 res.redirect('/500')
} 别的 {
让 csvStream = req.csv.createWriteStream({
标题:真实
})
res.setHeader('Content-disposition',attachment; filename=id-${id}-gen-${gen}-dup-${dup}.csv
)
res.setHeader('内容类型','text/csv')
csvStream.pipe(res)
让 sqlc = req.con.query(sql)
.on('result',(row) => {
csvStream.write(行)
})
.on('end',() => {
csvStream.end()
con.release(error => error ? reject(error) : resolve())
})
}
})
})
module.exports = app
但它吐出这个错误信息
Error: Handshake inactivity timeout
有什么遗漏了吗? 还有更多关于错误的信息,但它不会让我在这里发布。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。