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

带'insensitive'模式的Prisma查询无法正常工作

请提供需要格式化的具体内容,我会按照你指定的Markdown规则进行处理。


(若你是要处理之前的代码与问题内容,以下是格式化后的完整解答)

问题描述

数据库中存在名为Cheez的披萨,但发起请求 http://localhost:3000/api/product/search?query=cheez 时,接口仅返回空数组[],更新prisma@client也未解决该问题。

相关代码
import { prisma } from '@/prisma/prisma-client';
import { NextRequest, NextResponse } from 'next/server';

export async function GET(req: NextRequest) {
  const query: string = req.nextUrl.searchParams.get('query') || '';

  try {
    console.log(`Search query: '${query}'`);

    // Prisma 查询
    const products = await prisma.product.findMany({
      where: {
        name: {
          contains: query,
          mode: 'insensitive',
        },
      },
    });

    return NextResponse.json(products);
  } catch (error) {
    console.error('Error executing query:', error);
    return NextResponse.json({ error: 'An error occurred' }, { status: 500 });
  }
}
排查与解决方法
  • 直接验证数据库数据
    用SQL客户端执行查询确认数据是否存在:

    SELECT * FROM Product WHERE LOWER(name) LIKE LOWER('%cheez%');
    

    如果查不到结果,说明数据库内的记录名称存在拼写差异(比如实际是Cheese)或数据未正确写入。

  • 测试大小写匹配逻辑
    部分数据库(如SQLite)对mode: 'insensitive'的支持有限,可手动转换大小写测试:

    const products = await prisma.product.findMany({
      where: {
        OR: [
          { name: { contains: query } },
          { name: { contains: query.toUpperCase() } },
          { name: { contains: query.toLowerCase() } },
        ],
      },
    });
    
  • 检查Prisma Schema与客户端生成
    确保Product模型的name字段为String类型且无特殊约束:

    model Product {
      id    Int     @id @default(autoincrement())
      name  String
      // 其他字段
    }
    

    修改Schema后需重新生成客户端:

    npx prisma generate
    
  • 确认请求参数传递
    检查控制台输出的Search query是否为cheez,若参数异常,优化参数获取逻辑:

    const query = req.nextUrl.searchParams.get('query')?.trim() || '';
    console.log(`Received query: "${query}"`);
    
  • 检查数据库字符集
    确保数据库使用支持不区分大小写的字符集(如utf8mb4_unicode_ci),避免字符集导致的匹配失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 08:11:07