addRow
The addRow
method takes an object and creates a new Row
in the Store
, returning the unique Id
assigned to it.
addRow(
tableId: string,
row: Row,
reuseRowIds?: boolean,
): undefined | string
Type | Description | |
---|---|---|
tableId | string | |
row | Row | The data of a single |
reuseRowIds? | boolean | Whether |
returns | undefined | string | A reference to the |
This method will cause listeners to be called for any Table
, Row
, Cell
, or Id
changes resulting from it.
Any part of the provided object that is invalid (either according to the Row
type, or because it does not match a TablesSchema
associated with the Store
), will be ignored silently.
Assuming that at least some of the provided Row
object is valid, a new Row
will be created. If the object is completely invalid, no change will be made to the Store
and the method will return undefined
.
You should not guarantee the form of the unique Id
that is generated when a Row
is added to the Table
. However it is likely to be a string representation of an increasing integer.
The reuseRowIds
parameter defaults to true
, which means that if you delete a Row
and then add another, the Id
will be re-used - unless you delete the entire Table
, in which case all Row
Ids
will reset. Otherwise, if you specify reuseRowIds
to be false
, then the Id
will be a monotonically increasing string representation of an increasing integer, regardless of any you may have previously deleted.
Examples
This example adds a single Row
.
import {createStore} from 'tinybase';
const store = createStore();
console.log(store.addRow('pets', {species: 'dog'}));
// -> '0'
console.log(store.getTables());
// -> {pets: {'0': {species: 'dog'}}}
This example attempts to add Rows to an existing Store
with partly invalid, and then completely invalid, Row
objects.
import {createStore} from 'tinybase';
const store = createStore().setTables({pets: {'0': {species: 'dog'}}});
console.log(store.addRow('pets', {species: 'cat', bug: []}));
// -> '1'
console.log(store.getTables());
// -> {pets: {'0': {species: 'dog'}, '1': {species: 'cat'}}}
console.log(store.addRow('pets', 42));
// -> undefined
console.log(store.getTables());
// -> {pets: {'0': {species: 'dog'}, '1': {species: 'cat'}}}
Since
v1.0.0