【问题标题】:Filter an array passed from query params. NestJS, TypeORM过滤从查询参数传递的数组。 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 作为过滤数组示例的方法,但似乎更多的是仅用于整数数组?无论如何,我对任何允许过滤我提供的示例的最终结果的方法持开放态度,再次欢呼并感谢!

【问题讨论】:

    标签: mysql nestjs typeorm


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 哦,干杯,伙计,我尝试了很多东西,不仅仅是一个例子,以前和你的例子很接近,但我一定错过了一些东西,试过你的例子,现在可以了,干杯百万冠军!!
    猜你喜欢
    • 1970-01-01
    • 2021-03-06
    • 1970-01-01
    • 2021-07-21
    • 2019-04-03
    • 2014-02-06
    • 1970-01-01
    • 2021-01-29
    • 2022-07-07
    相关资源
    最近更新 更多