我可以帮助您进行文字翻译。以下是需要翻译的内容:
我刚开始使用SvelteKit,并且正在尝试将一个节点/Express服务器的端点适应为通用型,以便能够利用SvelteKit适配器。该端点通过node-postgresql从数据库下载存储的文件。
我的节点/Express中的功能性端点如下所示:
import stream from 'stream'
import db from '../utils/db'
export async function download(req, res) {
const _id = req.params.id
const sql = "SELECT _id, name, type, data FROM files WHERE _id = $1;"
const { rows } = await db.query(sql, [_id])
const file = rows[0]
const fileContents = Buffer.from(file.data, 'base64')
const readStream = new stream.PassThrough()
readStream.end(fileContents)
res.set('Content-disposition', `attachment; filename=${file.name}`)
res.set('Content-Type', file.type)
readStream.pipe(res)
}
到目前为止,我在SvelteKit中对于 [filenum].json.ts 的内容如下:
import stream from 'stream'
import db from '$lib/db'
export async function get({ params }): Promise<any> {
const { filenum } = params
const { rows } = await db.query('SELECT _id, name, type, data FROM files WHERE _id = $1;', [filenum])
if (rows) {
const file = rows[0]
const fileContents = Buffer.from(file.data, 'base64')
const readStream = new stream.PassThrough()
readStream.end(fileContents)
let body
readStream.pipe(body)
return {
headers: {
'Content-disposition': `attachment; filename=${file.name}`,
'Content-type': file.type
},
body
}
}
}
请问在SvelteKit中,如何在不创建与Node.js的依赖项的情况下完成此操作?根据SvelteKit端点文档,
我们不与来自Node.js http模块或类似Express的框架中您可能熟悉的 req/res 对象进行交互,因为它们仅在某些平台上可用。相反,SvelteKit将返回的对象转换为您部署应用程序所需的任何内容。