NestJS查询代码抛出‘invalid string length’错误,求排查
问题分析与修复
核心问题1:条件判断逻辑错误
你的if判断carBrand == 'Ferrari or Porsche'是在判断carBrand字符串完全等于"Ferrari or Porsche"这个整串,而不是判断carBrand属于Ferrari或Porsche两种情况。这会导致该if分支逻辑完全不符合预期,甚至永远不会触发。
核心问题2:SQL查询字段错误
你要筛选的是carBrand为Ferrari或Porsche,但代码里写的是db_table.carBrand = :tmp_1 OR db_table.contentLevel = :tmp_2,把Porsche错误对应到了contentLevel字段,这会让查询逻辑完全偏离需求,甚至可能因字段类型不匹配引发异常。
次要问题:代码语法不完整
提供的代码片段中if语句的大括号未闭合,这会直接导致语法错误,需要补全闭合的}。
修复后的代码示例
用IN写法更简洁:
if(carBrand === 'Ferrari' || carBrand === 'Porsche') { query = query.andWhere(`db_table.carBrand IN (:tmp_1, :tmp_2)`, { tmp_1: `Ferrari`, tmp_2: `Porsche`, }); }
也可以用OR写法:
if(carBrand === 'Ferrari' || carBrand === 'Porsche') { query = query.andWhere(`db_table.carBrand = :tmp_1 OR db_table.carBrand = :tmp_2`, { tmp_1: `Ferrari`, tmp_2: `Porsche`, }); }
内容的提问来源于stack exchange,提问作者king_potato
相关产品推荐
相关产品推荐

