Entity Storage Connector Synchronised Examples
Use these scenarios to wire synchronised entity persistence into a node, query records, and react to remote updates through the event bus.
SynchronisedEntityStorageConnector
import type { IEntitySchema } from '@twin.org/entity';
import { SynchronisedEntityStorageConnector } from '@twin.org/entity-storage-connector-synchronised';
import type { ISynchronisedEntity } from '@twin.org/synchronised-storage-models';
interface IProfileEntity extends ISynchronisedEntity {
displayName: string;
status: 'active' | 'paused';
}
const connector = new SynchronisedEntityStorageConnector<IProfileEntity>({
entitySchema: 'Profile',
entityStorageConnectorType: 'entity-storage-memory',
eventBusComponentType: 'event-bus',
config: {
storageKey: 'profile'
}
});
const className = connector.className();
const schema = connector.getSchema() as IEntitySchema<IProfileEntity>;
console.log(className); // SynchronisedEntityStorageConnector
console.log(schema.id); // Profile
import { SynchronisedEntityStorageConnector } from '@twin.org/entity-storage-connector-synchronised';
import { ComparisonOperator, SortDirection, type EntityCondition } from '@twin.org/entity';
import type { ISynchronisedEntity } from '@twin.org/synchronised-storage-models';
interface IProfileEntity extends ISynchronisedEntity {
displayName: string;
status: 'active' | 'paused';
}
const connector = new SynchronisedEntityStorageConnector<IProfileEntity>({
entitySchema: 'Profile',
entityStorageConnectorType: 'entity-storage-memory'
});
await connector.start('logging');
await connector.set({
id: 'profile-1',
nodeIdentity: 'did:iota:node-1',
dateModified: '2026-03-10T09:00:00.000Z',
displayName: 'Alex',
status: 'active'
});
const condition: EntityCondition<IProfileEntity> = {
property: 'status',
comparison: ComparisonOperator.Equals,
value: 'active'
};
const result = await connector.query(
condition,
[{ property: 'dateModified', sortDirection: SortDirection.Descending }],
['id', 'displayName', 'status'],
'',
20
);
console.log(result.entities.length); // 1
import { SynchronisedEntityStorageConnector } from '@twin.org/entity-storage-connector-synchronised';
import type { ISynchronisedEntity } from '@twin.org/synchronised-storage-models';
interface IProfileEntity extends ISynchronisedEntity {
displayName: string;
status: 'active' | 'paused';
}
const connector = new SynchronisedEntityStorageConnector<IProfileEntity>({
entitySchema: 'Profile',
entityStorageConnectorType: 'entity-storage-memory'
});
const profile = await connector.get('profile-1', 'id', [{ property: 'status', value: 'active' }]);
console.log(profile?.displayName); // Alex
await connector.remove('profile-1', [{ property: 'status', value: 'active' }]);
const deletedProfile = await connector.get('profile-1');
console.log(deletedProfile); // undefined