TinyBase logoTinyBase

addWillSetValuesCallback

The addWillSetValuesCallback method registers a WillSetValuesCallback that will be called before Values are set in the Store.

addWillSetValuesCallback(callback: WillSetValuesCallback): Middleware
TypeDescription
callbackWillSetValuesCallback

The WillSetValuesCallback to register.

returnsMiddleware

A reference to the Middleware object, for chaining.

The callback can transform the Values or return undefined to prevent the write. Multiple callbacks can be registered and they are called sequentially, each receiving the (possibly transformed) values from the previous callback.

Examples

This example registers a callback that upper-cases all string Values in the pet store's settings.

import {createMiddleware, createStore} from 'tinybase';

const store = createStore();
const middleware = createMiddleware(store);

middleware.addWillSetValuesCallback((values) =>
  Object.fromEntries(
    Object.entries(values).map(([k, v]) => [
      k,
      typeof v === 'string' ? v.toUpperCase() : v,
    ]),
  ),
);

store.setValues({storeName: 'happy pets', limit: 50});
console.log(store.getValues());
// -> {storeName: 'HAPPY PETS', limit: 50}

middleware.destroy();

This example registers a callback that prevents setting Values when the pet store is 'closed'.

import {createMiddleware, createStore} from 'tinybase';

const store = createStore();
const middleware = createMiddleware(store);

middleware.addWillSetValuesCallback((values) =>
  'closed' in values ? undefined : values,
);

store.setValues({closed: true, storeName: 'happy pets'});
console.log(store.getValues());
// -> {}

middleware.destroy();

Since

v8.0.0