Next.js从MariaDB查询仅返回首行数据的问题求助
解决Next.js从MariaDB仅返回单条数据的问题
问题分析
你的代码使用mariadb驱动的execute方法时,可能因方法特性或返回值处理逻辑,导致仅拿到首行数据。execute主要适配带参数的预处理查询,对于无参数的普通查询,改用query方法更直接,返回结果即为完整的行数组。
修改后的代码
const mariadb = require('mariadb'); export default async function handler(req, res) { let dbconnection; try { dbconnection = await mariadb.createConnection({ host: "127.0.0.1", database: "medipal", user: "root", password: "password", // port: 8889, // socketPath: '\\\\.\\pipe\\MySQL' }); const query = "SELECT hospital_id,name,image FROM hospital_l"; // 改用query方法执行无参数查询,直接获取所有行的数组 const data = await dbconnection.query(query); res.status(200).json({ hospital_list: data }); } catch (error) { res.status(500).json({ error: error.message }); } finally { // 确保无论请求成功或失败,数据库连接都能关闭 if (dbconnection) await dbconnection.end(); } }
关键修改说明
- 替换
execute为query:query方法针对无参数的SELECT查询,直接返回所有匹配记录的数组,无需额外解构处理。 - 优化连接关闭逻辑:将连接关闭操作移至
finally块,避免因异常导致连接未释放的资源泄漏问题。
额外验证步骤
若仍存在问题,可在代码中添加日志确认获取到的记录数量:
console.log('获取到的记录总数:', data.length);
内容的提问来源于stack exchange,提问作者lto
相关产品推荐
相关产品推荐

