SvelteKit 1.0.0-next.73数据库读取数据返回undefined问题求助
错误分析与修复方案
核心错误1:SvelteKit服务器路由返回格式不符
你使用的SvelteKit 1.0.0-next.73版本中,服务器端get函数必须将数据放在body字段中返回,页面组件才能通过export let data正确接收。当前返回的{ results }不符合框架约定,导致组件接收到的data为undefined。
核心错误2:查询异常时无有效返回值
数据库查询抛出错误时,catch块仅打印错误但未返回任何内容,会导致results变为undefined;即使查询成功,错误的返回结构也无法传递数据。
修复后的代码
1. 修改 /routes/index.server.js
import { mysqlconnFn } from '$lib/db/mysql'; export async function get() { let mysqlconn = await mysqlconnFn(); try { const [rows] = await mysqlconn.query('SELECT * FROM list_user'); // 按框架要求将数据放入body字段返回 return { body: rows }; } catch (err) { console.error('数据库查询错误:', err); // 异常时返回空数组或错误信息,避免传递undefined return { body: [] }; } }
2. 优化 /routes/index.svelte(可选)
无需依赖onMount,直接在脚本中即可访问data:
<script> export let data; // 直接打印数据,无需等待组件挂载 console.log(data); </script>
3. 数据库连接函数验证(无需修改)
你的mysqlconnFn单例模式写法正确,mysql.createConnection返回Promise,通过await mysqlconnFn()可正确获取连接实例,这部分无需调整。
内容的提问来源于stack exchange,提问作者GoodSea88
相关产品推荐
相关产品推荐

