Warning
This project has been deprecated in favor of @normalized-db/ndb.
Denormalize JavaScript
objects from a normalized data structure based on a simple schema
(implemented with TypeScript
).
- Author: Sandro Schmid ([email protected])
- Version: 2.5.0-beta.4
To ease versioning equal major and minor version numbers are used for all modules.
Install using NPM:
npm install --save @normalized-db/denormalizer
Use the DenormalizerBuilder
to create a Denormalizer
. Use either schema(…)
or schemaConfig(…)
to apply a
schema configuration. This is the only required parameter. If normalizedData
does not contain an object which is
needed during denormalization then the Denormalizer
will try to lazy load it using fetchCallback
. The KeyMap
is a helper with a mapping from primary keys to the index of the related object in the normalized data.
To actually denormalize an object or an array of objects use either…
applyAll(…): Promise<T[]>
for objects of a given typeapplyAllKeys(…): Promise<T[]>
for objects with keys of a given typeapply(…): Promise<T>
for single objects of a given typeapplyKey(…): Promise<T>
for single objects by a key of a given type
The type
-argument defines the data-store in which the item should be contained. Using a depth
you can define
how far the denormalization should be applied. A number means that all targets should be denormalized to the n-th level.
null
means that the field should be denormalized as far as possible. Note that circular dependencies currently will
not be detected. If you need different levels for various fields then use a Depth
-object like
e.g. { foo: 3, bar: { x: 1, y: null }
. This would denormalize up to 3 levels on obj.foo, 1 level on obj.bar.x and
everything on obj.bar.y.
See the examples-project for detailed examples: