Next.js中async/await未等待返回值,数据库查询结果为undefined
Next.js + Prisma 获取数据返回 undefined 问题解决
核心问题:模块系统不兼容
你的Database.js混用了CommonJS(require)和ES模块(export)语法,导致模块导出异常,getServerSideProps无法正确获取异步函数的返回值。
修复步骤:
- 统一模块语法
将Database.js中的require替换为ES模块的import:
import { PrismaClient } from '@prisma/client' const prisma = new PrismaClient(); export async function getUsername(userid) { const query = await prisma.user.findMany({ where: { id: userid }, select: { username: true, } }) return query[0]?.username; // 用可选链避免无匹配用户时抛出错误 }
- 优化查询(可选)
根据唯一ID查询用户,使用findUnique比findMany更高效,返回单个对象而非数组:
export async function getUsername(userid) { const user = await prisma.user.findUnique({ where: { id: userid }, select: { username: true, } }) return user?.username; }
- 添加错误捕获排查
在getServerSideProps中加入错误捕获,排查是否有隐藏异常:
import * as Database from "../../../Database"; export async function getServerSideProps() { try { const username = await Database.getUsername('633d5c12e0bf4ed28b2c3428') return { props: { username: username } }; } catch (err) { console.error('获取用户名失败:', err) return { props: { username: null } } } }
- 验证导入路径
确认../../../Database的路径准确指向你的Database.js文件,避免因路径错误导致导入失效。
内容的提问来源于stack exchange,提问作者Muni
相关产品推荐
相关产品推荐

