drizzle-team / drizzle-orm

Headless TypeScript ORM with a head. Runs on Node, Bun and Deno. Lives on the Edge and yes, it's a JavaScript ORM too 😅
https://orm.drizzle.team
Apache License 2.0
23.68k stars 587 forks source link

[BUG]: value.map is not a function in InArray for a pgEnum array column. #1927

Open codezuma opened 7 months ago

codezuma commented 7 months ago

What version of drizzle-orm are you using?

^0.29.4

What version of drizzle-kit are you using?

^0.19.11

Describe the Bug

Schema

 export const AmmenitiesEnum = pgEnum("ammenities", [
  "Shopping centres/malls",
  "Health care facilities",
  "Schools and colleges/universities",
  "Parks and Gardens",
  "Public Trasnport facilty",
  "Fuel Station",
  "Other Recreational facilities",
]);

export const properties = pgTable("properties", {
  id: serial("id").primaryKey(),
  amenities: AmmenitiesEnum("ammenites").array(),
});

I am trying to query the properties by InArray function of drizzle to get desired out this is my query code

 const desiredAmenities :any[] = ["Shopping centres/malls", "Parks and Gardens"]; 
      conditions.push(inArray(properties.amenities, desiredAmenities));

I am recieving an error

TypeError: value.map is not a function
    at PgArray.mapToDriverValue (D:\code\kraftbase\myProperty-backend\node_modules\src\pg-core\columns\common.ts:202:19)      
    at D:\code\kraftbase\myProperty-backend\node_modules\src\sql\sql.ts:201:71
    at Array.map (<anonymous>)
    at SQL.buildQueryFromSourceParams (D:\code\kraftbase\myProperty-backend\node_modules\src\sql\sql.ts:142:30)
    at D:\code\kraftbase\myProperty-backend\node_modules\src\sql\sql.ts:164:17
    at Array.map (<anonymous>)
    at SQL.buildQueryFromSourceParams (D:\code\kraftbase\myProperty-backend\node_modules\src\sql\sql.ts:142:30)
    at D:\code\kraftbase\myProperty-backend\node_modules\src\sql\sql.ts:168:17
    at Array.map (<anonymous>)
    at SQL.buildQueryFromSourceParams (D:\code\kraftbase\myProperty-backend\node_modules\src\sql\sql.ts:142:30)

Expected behavior

Should return the filtered properties

Environment & setup

No response

mtunyk commented 2 months ago

Cannot reproduce this bug. The mapping above works like a charm in Drizzle v0.32.1. Most likely, while updating amenities, you’re directly passing the wrong format. You should pass it in array format.