使用Prisma findMany查询指定周数据返回空数组求助
问题描述
请求地址为 http://localhost:3000/user/test/week?week=13&year=2023,使用以下Prisma代码执行查询:
const result = await prisma.test.findMany({ where: { isActive: true, week: value.week, year: value.year }, }); render(res, 200, statuscodes.OK, result);
执行后返回长度为0的数组,但预期应返回该周的对应数据,需排查解决。
排查与解决步骤
检查参数接收与类型匹配
先确认value.week和value.year是否正确获取到URL参数的13和2023,可在查询前打印日志验证:console.log('Params received:', value.week, value.year);若URL参数是字符串类型,而数据库中
week/year为数字类型,需做类型转换:week: parseInt(value.week, 10), year: parseInt(value.year, 10)直接验证数据库数据
在数据库客户端执行原生SQL,确认是否存在符合条件的数据:SELECT * FROM test WHERE isActive = true AND week = 13 AND year = 2023;若SQL返回空,说明数据库无对应数据,需检查数据录入逻辑;若SQL有结果,再排查Prisma查询逻辑。
核对
isActive字段匹配规则
确认数据库中isActive的字段类型:如果是布尔型,检查对应数据的isActive是否为true;如果是整数型(如0/1),需将Prisma查询条件改为对应值,比如isActive: 1。检查Prisma模型与数据库表映射
查看schema.prisma中Test模型的定义,确认week、year、isActive的字段名、类型是否与数据库表完全一致,避免因字段名不匹配导致查询失败。开启Prisma查询日志
在schema.prisma中配置日志,查看实际执行的SQL语句:generator client { provider = "prisma-client-js" log = ["query"] }运行后查看终端输出的SQL,对比实际查询条件与预期是否一致。
内容的提问来源于stack exchange,提问作者Bagus
相关产品推荐
相关产品推荐

