过滤从查询参数传递的数组。 NestJS,TypeORM

Posted

技术标签:

【中文标题】过滤从查询参数传递的数组。 NestJS,TypeORM【英文标题】:Filter an array passed from query params. NestJS, TypeORM 【发布时间】:2021-03-15 02:36:46 【问题描述】:

我用的是带有TypeORM的NestJS,数据库是mysql,我想过滤多个可以传入的参数。

前端有一个产品列表,过滤器用作发送到 NestJS 的查询参数,过滤适用于单个参数,例如 api.example.com?manufacturer=Acer,但我将如何过滤数组,例如 api.example.com ?manufacturer=宏碁、东芝、华硕。

我在 TypeORM 中尝试了很多东西,目前使用 QueryBuilder 使用 if 语句构建数组,如果过滤器存在,那么我正在执行类似 where 语句的操作。

.andWhere(manufacturer = filterOne, filterOne: *manufacturers from the query param*)

但是是的,只是不能一起破解一些东西,尝试了几件事,上面是一个粗略的例子,确实尝试了 TypeORM 作为过滤数组示例的方法,但似乎更多的是仅用于整数数组?无论如何,我对任何允许过滤我提供的示例的最终结果的方法持开放态度,再次欢呼并感谢!

【问题讨论】:

【参考方案1】:

您必须使用IN 来获取制造商等于来自查询的数据的所有数据,首先,您必须将查询转换为数组:

var manufacturerParam = filterOne.split(",");

然后将其添加到您的查询中:

.andWhere(manufacturer IN (:filter)",  filter: manufacturerParam  ) 

【讨论】:

哦,干杯,伙计,我尝试了很多东西,不仅仅是一个例子,以前和你的例子很接近,但我一定错过了一些东西,试过你的例子,现在可以了,干杯百万冠军!!

以上是关于过滤从查询参数传递的数组。 NestJS,TypeORM的主要内容,如果未能解决你的问题,请参考以下文章

单元测试 Nest JS 过滤器捕获方法

如何形成一个数组以从具有多个参数的 URL 进行查询

NestJS“获得”多个参数

EasyUI 数据网格行过滤中 通过远程服务器去过滤 参数是如何传递过去的,服务器是如何接收的?

如何从 NestJS 中的 Query 中获取参数

GraphQL 如何使用 Nestjs 或 type-graphql 设置查询 MongoDB ref 集合