drizzle-team / drizzle-team/drizzle-orm

[BUG]: `findFirst` with no results fails on D1 when using batch

Open
#2,721 5 comments 11 reactions 0 assignees View on GitHub
bug bug/fixed-in-beta driver/d1 priority rqb
Dominant language
TypeScript
Stars
35.8k
Forks
1.6k
Avg merge
2d 7h
Merged PRs (30d)
4

Description

### What version of `drizzle-orm` are you using?

0.32.1

### What version of `drizzle-kit` are you using?

0.23.1

### Describe the Bug

When calling `findFirst` with a query which doesn't return any results, usually `null` or `undefined` is returned (depending on which drizzle database provider is being used. This works as expected.

```typescript
const result = db.query.table.findFirst({
where: eq(schema.table.key, 'not-existing'),
});
```

However, when executing `findFirst` in a `batch`, an exception is thrown, when no results are found.

```typescript
const [result] = await db.batch([
db.query.table.findFirst({
where: eq(schema.table.key, 'not-existing'),
}),
]);
```

The stack trace is:
```
TypeError: Cannot read properties of undefined (reading '0')
at mapRelationalRow (.next/server/edge/chunks/ssr/074db_drizzle-orm_2402e8._.js:1975:45)
at .next/server/edge/chunks/ssr/074db_drizzle-orm_2402e8._.js:4486:414
at Array.map ()
at D1PreparedQuery.customResultMapper (.next/server/edge/chunks/ssr/074db_drizzle-orm_2402e8._.js:4486:34)
at D1PreparedQuery.mapGetResult (.next/server/edge/chunks/ssr/074db_drizzle-orm_2402e8._.js:5180:25)
at D1PreparedQuery.mapResult (.next/server/edge/chunks/ssr/074db_drizzle-orm_2402e8._.js:4958:33)
at .next/server/edge/chunks/ssr/074db_drizzle-orm_2402e8._.js:5068:65
at Array.map ()
at SQLiteD1Session.batch (.next/server/edge/chunks/ssr/074db_drizzle-orm_2402e8._.js:5068:29)
```

### Expected behavior

_No response_

### Environment & setup

_No response_

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.