Skip to main content
server.SelectableQueryInitializer The entry point ctx.db.query(...) returns: upstream’s initializer, with every query it produces still projectable.

Type parameters

Hierarchy

Methods

filter

▸ filter(predicate): SelectableQueryInitializer<TableInfo> Filter the query output, returning only the values for which predicate evaluates to true. Important: Prefer using .withIndex() over .filter() whenever possible. Filters scan all documents matched so far and discard non-matches, while indexes efficiently skip non-matching documents. Define an index in your schema for fields you filter on frequently.

Parameters

Returns

SelectableQueryInitializer<TableInfo>
  • A new OrderedQuery with the given filter predicate applied.

Inherited from

SelectableQuery.filter

paginate

▸ paginate(paginationOpts): Promise<PaginationResult<DocumentByInfo<TableInfo>>> Load a page of n results and obtain a Cursor for loading more. Note: If this is called from a reactive query function the number of results may not match paginationOpts.numItems! paginationOpts.numItems is only an initial value. After the first invocation, paginate will return all items in the original query range. This ensures that all pages will remain adjacent and non-overlapping.

Parameters

Returns

Promise<PaginationResult<DocumentByInfo<TableInfo>>> A PaginationResult containing the page of results and a cursor to continue paginating.

Inherited from

SelectableQuery.paginate

collect

▸ collect(): Promise<DocumentByInfo<TableInfo>[]> Execute the query and return all of the results as an array. Warning: This loads every matching document into memory. If the result set can grow unbounded as your database grows, .collect() will eventually cause performance problems or hit limits. Only use .collect() when the result set is tightly bounded (e.g., a known small number of items). Prefer .first(), .unique(), .take(n), or .paginate() when the result set may be large or unbounded. For processing many results without loading all into memory, use the Query as an AsyncIterable with for await...of.

Returns

Promise<DocumentByInfo<TableInfo>[]>
  • An array of all of the query’s results.

Inherited from

SelectableQuery.collect

take

▸ take(n): Promise<DocumentByInfo<TableInfo>[]> Execute the query and return the first n results.

Parameters

Returns

Promise<DocumentByInfo<TableInfo>[]>
  • An array of the first n results of the query (or less if the query doesn’t have n results).

Inherited from

SelectableQuery.take

first

▸ first(): Promise<null | DocumentByInfo<TableInfo>> Execute the query and return the first result if there is one.

Returns

Promise<null | DocumentByInfo<TableInfo>>
  • The first value of the query or null if the query returned no results.

Inherited from

SelectableQuery.first

unique

▸ unique(): Promise<null | DocumentByInfo<TableInfo>> Execute the query and return the singular result if there is one. Use this when you expect exactly zero or one result, for example when querying by a unique field. If the query matches more than one document, this will throw an error. Example
Throws Will throw an error if the query returns more than one result.

Returns

Promise<null | DocumentByInfo<TableInfo>>
  • The single result returned from the query or null if none exists.

Inherited from

SelectableQuery.unique

select

▸ select<Fields>(fields): ProjectedQuery<TableInfo, Fields> See select.

Type parameters

Parameters

Returns

ProjectedQuery<TableInfo, Fields>

Inherited from

SelectableQuery.select

order

▸ order(order): SelectableOrderedQuery<TableInfo> Define the order of the query output. Use "asc" for an ascending order and "desc" for a descending order. If not specified, the order defaults to ascending.

Parameters

Returns

SelectableOrderedQuery<TableInfo>

Overrides

SelectableQuery.order

fullTableScan

▸ fullTableScan(): SelectableQuery<TableInfo> Query by reading all of the values out of this table. This query’s cost is relative to the size of the entire table, so this should only be used on tables that will stay very small (say between a few hundred and a few thousand documents) and are updated infrequently.

Returns

SelectableQuery<TableInfo>
  • The Query that iterates over every document of the table.

Overrides

QueryInitializer.fullTableScan

withIndex

▸ withIndex<IndexName>(indexName, indexRange?): SelectableQuery<TableInfo> Query by reading documents from an index on this table. This query’s cost is relative to the number of documents that match the index range expression. Results will be returned in index order. To learn about indexes, see Indexes.

Type parameters

Parameters

Returns

SelectableQuery<TableInfo>
  • The query that yields documents in the index.

Overrides

QueryInitializer.withIndex

withSearchIndex

▸ withSearchIndex<IndexName>(indexName, searchFilter): SelectableOrderedQuery<TableInfo> Query by running a full text search against a search index. Search queries must always search for some text within the index’s searchField. This query can optionally add equality filters for any filterFields specified in the index. Documents will be returned in relevance order based on how well they match the search text. To learn about full text search, see Indexes.

Type parameters

Parameters

Returns

SelectableOrderedQuery<TableInfo>
  • A query that searches for matching documents, returning them in relevancy order.

Overrides

QueryInitializer.withSearchIndex

[asyncIterator]

▸ [asyncIterator](): AsyncIterator<DocumentByInfo<TableInfo>, any, undefined>

Returns

AsyncIterator<DocumentByInfo<TableInfo>, any, undefined>

Inherited from

SelectableQuery.[asyncIterator]