drizzle-orm
drizzle-orm copied to clipboard
[BUG]: value.map is not a function in InArray for a pgEnum array column.
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
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.
properties.amenities is an array field. inArray is meant to compare a scalar value to a list/array. You can use arrayContains or arrayContained instead.
@codezuma how did you fix this?