我想用 Prisma 实现一个简单的搜索功能我已经看到了一些关于使用该where
子句的信息,但它区分大小写,所以它不是一个好的解决方案。
我还看过一些使用外部服务的教程。我不想使用任何外部服务。我想做一些尽可能简单的事情。
有什么办法可以将查询调整为不区分大小写?或者你们推荐的任何其他方法?
谢谢 :)
我想用 Prisma 实现一个简单的搜索功能我已经看到了一些关于使用该where
子句的信息,但它区分大小写,所以它不是一个好的解决方案。
我还看过一些使用外部服务的教程。我不想使用任何外部服务。我想做一些尽可能简单的事情。
有什么办法可以将查询调整为不区分大小写?或者你们推荐的任何其他方法?
谢谢 :)
此功能尚未实现:https ://github.com/prisma/prisma1/issues/1183
但是,如果它支持此功能,您可以对数据库进行原始访问:https ://www.prisma.io/docs/prisma-graphql-api/reference/raw-database-access-qwe4/#overview
尝试模式
const users = await prisma.user.findMany({
where: {
email: {
endsWith: "prisma.io",
mode: "insensitive", // Default value: default
},
},
});
您可以使用 prisma 客户端进行类似搜索的查询。where
这是我的一个应用程序中用户实体的查询参数的自动生成接口的示例。
export interface UserWhereInput {
name?: String;
name_not?: String;
name_in?: String[] | String;
name_not_in?: String[] | String;
name_lt?: String;
name_lte?: String;
name_gt?: String;
name_gte?: String;
name_contains?: String;
name_not_contains?: String;
name_starts_with?: String;
name_not_starts_with?: String;
name_ends_with?: String;
name_not_ends_with?: String;
...
AND?: UserWhereInput[] | UserWhereInput;
}
注意name_contains
和name_starts_with
。这些都可用于简单搜索,这是一个示例解析器 -
const userSearchResolver = async (_root, _args, _context) => {
return await _context.prisma.users({
where: {
name_starts_with: _args.searchQuery
}
});
}
);