我想实现一个数据结构,以便在我的应用程序中进行强大的过滤。
我找到的最接近的实现来自Prisma https://www.prisma.io/docs/1.27/prisma-graphql-api/reference/queries-qwe1/#combining-multiple-filters(据我了解,实际上是来自GraphQL规范)
示例:
{
OR: [
{
AND: [
{ title_in: ["My biggest Adventure", "My latest Hobbies"] }
{ published: true }
]
}
{ id: "cixnen24p33lo0143bexvr52n" }
]
}
该想法是将上下文与过滤条件进行比较,看看是否匹配。
在上面的示例中,“上下文”将是具有id
,title
和published
字段的对象。
我正在寻找一种可以执行比较并确定是否匹配的算法。
由于我不想重新设计轮子(特别是它是一个复杂的算法恕我直言,因为可以嵌套AND / OR / NOT条件),所以我想知道该特定算法是否已经存在,或者是否基于某些标准< em>(因为我们可以在Prisma,PipeDrive等应用程序中找到特定的数据结构)。
我正在寻找文档,实现示例,甚至是开源实现。 (我正在使用JS)
答案 0 :(得分:1)
我也在寻找这样的实现,但是找不到。
因此,我为此创建了一个原型:https://github.com/Errorname/logical-object-match
答案 1 :(得分:0)
我们找不到符合我们要求的解决方案,因此建立了自己的解决方案并将其发布为OSS(MIT)。
https://github.com/UnlyEd/conditions-matcher
将给定上下文与过滤器(一组条件)进行比较,并确定上下文是否验证过滤器。受到GraphQL过滤器的强烈启发。