Skip to content

Commit f13819f

Browse files
KyleAMathewsclaude
andauthored
docs: Update query examples to use eq() helper for boolean comparisons (#1299)
fix(docs): use eq() operator in .where() clauses instead of bare boolean expressions The .where() clause requires expression objects (via eq(), gt(), etc.), not raw JavaScript boolean expressions. Bare property references like `todo.completed` or negated expressions like `!todo.completed` fail the isExpressionLike() validation at runtime, throwing InvalidWhereExpressionError. Fixed in docs/overview.md, docs/guides/schemas.md, docs/collections/trailbase-collection.md, docs/reference/classes/BaseQueryBuilder.md, and source JSDoc in packages/db/src/query/builder/index.ts. Fixes #1297 https://claude.ai/code/session_01VD8cnL4qhw4k5XKaK9qL8L Co-authored-by: Claude <noreply@anthropic.com>
1 parent 49c9374 commit f13819f

File tree

5 files changed

+11
-10
lines changed

5 files changed

+11
-10
lines changed

docs/collections/trailbase-collection.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,7 @@ const todosCollection = createCollection(
147147
## Complete Example
148148

149149
```typescript
150-
import { createCollection } from '@tanstack/react-db'
150+
import { createCollection, eq } from '@tanstack/react-db'
151151
import { trailBaseCollectionOptions } from '@tanstack/trailbase-db-collection'
152152
import { initClient } from 'trailbase'
153153
import { z } from 'zod'
@@ -195,7 +195,7 @@ export const todosCollection = createCollection<SelectTodo, Todo>(
195195
function TodoList() {
196196
const { data: todos } = useLiveQuery((q) =>
197197
q.from({ todo: todosCollection })
198-
.where(({ todo }) => !todo.completed)
198+
.where(({ todo }) => eq(todo.completed, false))
199199
.orderBy(({ todo }) => todo.created_at, 'desc')
200200
)
201201

docs/guides/schemas.md

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -831,7 +831,7 @@ A complete todo application demonstrating validation, transformations, and defau
831831

832832
```typescript
833833
import { z } from 'zod'
834-
import { createCollection } from '@tanstack/react-db'
834+
import { createCollection, eq } from '@tanstack/react-db'
835835
import { queryCollectionOptions } from '@tanstack/query-db-collection'
836836

837837
// Schema with validation, transformations, and defaults
@@ -921,7 +921,7 @@ const todoCollection = createCollection(
921921
function TodoApp() {
922922
const { data: todos } = useLiveQuery(q =>
923923
q.from({ todo: todoCollection })
924-
.where(({ todo }) => !todo.completed)
924+
.where(({ todo }) => eq(todo.completed, false))
925925
.orderBy(({ todo }) => todo.created_at, 'desc')
926926
)
927927

@@ -991,6 +991,7 @@ function TodoApp() {
991991

992992
```typescript
993993
import { z } from 'zod'
994+
import { eq } from '@tanstack/db'
994995

995996
// Schema with computed fields and transformations
996997
const productSchema = z.object({
@@ -1046,7 +1047,7 @@ const productCollection = createCollection(
10461047
function ProductList() {
10471048
const { data: products } = useLiveQuery(q =>
10481049
q.from({ product: productCollection })
1049-
.where(({ product }) => product.in_stock) // Use computed field
1050+
.where(({ product }) => eq(product.in_stock, true)) // Use computed field
10501051
.orderBy(({ product }) => product.final_price, 'asc')
10511052
)
10521053

docs/overview.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ const todoCollection = createCollection({
5757
const Todos = () => {
5858
// Bind data using live queries
5959
const { data: todos } = useLiveQuery((q) =>
60-
q.from({ todo: todoCollection }).where(({ todo }) => todo.completed)
60+
q.from({ todo: todoCollection }).where(({ todo }) => eq(todo.completed, false))
6161
)
6262

6363
const complete = (todo) => {

docs/reference/classes/BaseQueryBuilder.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -288,7 +288,7 @@ A QueryBuilder with the specified source
288288
query.from({ users: usersCollection })
289289

290290
// Query from a subquery
291-
const activeUsers = query.from({ u: usersCollection }).where(({u}) => u.active)
291+
const activeUsers = query.from({ u: usersCollection }).where(({u}) => eq(u.active, true))
292292
query.from({ activeUsers })
293293
```
294294

@@ -550,7 +550,7 @@ query
550550
```
551551

552552
// Join with a subquery
553-
const activeUsers = query.from({ u: usersCollection }).where(({u}) => u.active)
553+
const activeUsers = query.from({ u: usersCollection }).where(({u}) => eq(u.active, true))
554554
query
555555
.from({ activeUsers })
556556
.join({ p: postsCollection }, ({u, p}) => eq(u.id, p.userId))

packages/db/src/query/builder/index.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,7 @@ export class BaseQueryBuilder<TContext extends Context = Context> {
129129
* query.from({ users: usersCollection })
130130
*
131131
* // Query from a subquery
132-
* const activeUsers = query.from({ u: usersCollection }).where(({u}) => u.active)
132+
* const activeUsers = query.from({ u: usersCollection }).where(({u}) => eq(u.active, true))
133133
* query.from({ activeUsers })
134134
* ```
135135
*/
@@ -171,7 +171,7 @@ export class BaseQueryBuilder<TContext extends Context = Context> {
171171
* ```
172172
*
173173
* // Join with a subquery
174-
* const activeUsers = query.from({ u: usersCollection }).where(({u}) => u.active)
174+
* const activeUsers = query.from({ u: usersCollection }).where(({u}) => eq(u.active, true))
175175
* query
176176
* .from({ activeUsers })
177177
* .join({ p: postsCollection }, ({u, p}) => eq(u.id, p.userId))

0 commit comments

Comments
 (0)