You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 23:45:23