我想用Prisma实现一个简单的搜索功能
我已经看到了有关使用where
子句的一些信息,但是它区分大小写,因此不是一个好的解决方案。
我还看过一些使用外部服务的教程。我不想使用任何外部服务。 我想做一些尽可能简单的事情。
有什么办法可以将查询调整为不区分大小写?或您推荐的其他任何方法?
谢谢:)
答案 0 :(得分:3)
此功能尚未实现:https://github.com/prisma/prisma/issues/1183
但是,如果数据库支持此功能,则可以对其进行原始访问:https://www.prisma.io/docs/prisma-graphql-api/reference/raw-database-access-qwe4/#overview
答案 1 :(得分:0)
您可以使用pyramida客户端进行类似搜索的查询。这是我的其中一个应用中的User实体的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
}
});
}
);
答案 2 :(得分:0)
尝试模式
const users = await prisma.user.findMany({
where: {
email: {
endsWith: "prisma.io",
mode: "insensitive", // Default value: default
},
},
});