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

Next.js中async/await未等待返回值,数据库查询结果为undefined

Next.js + Prisma 获取数据返回 undefined 问题解决

核心问题:模块系统不兼容

你的Database.js混用了CommonJS(require)和ES模块(export)语法,导致模块导出异常,getServerSideProps无法正确获取异步函数的返回值。

修复步骤:

  1. 统一模块语法
    将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; // 用可选链避免无匹配用户时抛出错误
}
  1. 优化查询(可选)
    根据唯一ID查询用户,使用findUnique比findMany更高效,返回单个对象而非数组:
export async function getUsername(userid) {
    const user = await prisma.user.findUnique({
        where: {
            id: userid
        },
        select: {
            username: true,
        }
    })
    return user?.username;
}
  1. 添加错误捕获排查
    在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
            }
        }
    }
}
  1. 验证导入路径
    确认../../../Database的路径准确指向你的Database.js文件,避免因路径错误导致导入失效。

内容的提问来源于stack exchange,提问作者Muni

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 10:30:29