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
.
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.
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'}}}