ThroughDBProvider.getItem()method
Get an item from a collection by its id, or undefined if it doesn't exist.
getItem(collection: Collection<string, II, TT>, id: II): Promise<OptionalItem<II, TT>>
new ThroughDBProvider<I, T>(source: DBProvider<I, T>)
| Param | Type | |
|---|---|---|
source | DBProvider<I, T> | The provider to delegate all operations to. required |
| Return | |
|---|---|
ThroughDBProvider<I, T> | Database provider that passes every operation straight through to a wrapped source provider. |
| Property | Type | |
|---|---|---|
.source | DBProvider<I, T> | The wrapped source provider that every operation is delegated to. required readonly |
Database provider that passes every operation straight through to a wrapped source provider.
Through*Provider family (validation, caching, logging, change tracking); subclasses override individual methods to add behaviour and call super to delegate.source and implements Sourceable, so wrapped providers can be discovered with getSource() / requireSource().The identity pass-through base for wrapping providers. ThroughDBProvider takes a source provider and delegates every method to it. Extend it to intercept only the methods you care about — timing, metrics, access control — without reimplementing the rest.
ValidationDBProvider, DebugDBProvider, and ChangesDBProvider are all ThroughDBProvider subclasses.
Override only the methods you need and call super to delegate the rest:
import { ThroughDBProvider } from "shelving/db";
class TimingDBProvider extends ThroughDBProvider {
override async getItem(collection, id) {
const t = performance.now();
const result = await super.getItem(collection, id);
console.log(`getItem took ${performance.now() - t}ms`);
return result;
}
}const provider = new ValidationDBProvider(new MemoryDBProvider());
Get an item from a collection by its id, or undefined if it doesn't exist.
getItem(collection: Collection<string, II, TT>, id: II): Promise<OptionalItem<II, TT>>
Get an item from a collection by its id, or throw if it doesn't exist.
requireItem(collection: Collection<string, II, TT>, id: II): Promise<Item<II, TT>>
Subscribe to live changes for a single item by its id.
getItemSequence(collection: Collection<string, II, TT>, id: II): OptionalItemSequence<II, TT>
Add a new item to a collection and return its generated id.
addItem(collection: Collection<string, II, TT>, data: TT): Promise<II>
Set (insert or overwrite) the data for an item by its id.
setItem(collection: Collection<string, II, TT>, id: II, data: TT): Promise<void>
Apply partial updates to an existing item by its id.
updateItem(collection: Collection<string, II, TT>, id: II, updates: Updates<Item<II, TT>>): Promise<void>
Delete an item from a collection by its id.
deleteItem(collection: Collection<string, II, TT>, id: II): Promise<void>
Count the items in a collection matching an optional query.
countQuery(collection: Collection<string, II, TT>, query?: Query<Item<II, TT>>): Promise<number>
Get the items in a collection matching an optional query.
getQuery(collection: Collection<string, II, TT>, query?: Query<Item<II, TT>>): Promise<Items<II, TT>>
Subscribe to live changes for the result of a query.
getQuerySequence(collection: Collection<string, II, TT>, query?: Query<Item<II, TT>>): ItemsSequence<II, TT>
Set (overwrite) the data for every item matching a query.
setQuery(collection: Collection<string, II, TT>, query: Query<Item<II, TT>>, data: TT): Promise<void>
Apply partial updates to every item matching a query.
updateQuery(collection: Collection<string, II, TT>, query: Query<Item<II, TT>>, updates: Updates<TT>): Promise<void>
Delete every item matching a query.
deleteQuery(collection: Collection<string, II, TT>, query: Query<Item<II, TT>>): Promise<void>
Get the first item matching a query, or undefined if there are none.
getFirst(collection: Collection<string, II, TT>, query: Query<Item<II, TT>>): Promise<OptionalItem<II, TT>>
Get the first item matching a query, or throw if there are none.
requireFirst(collection: Collection<string, II, TT>, query: Query<Item<II, TT>>): Promise<Item<II, TT>>