@dandi/model-builder v1.0.0-alpha.77
@dandi/model-builder
The @dandi/model-builder package contains utilities for dynamically
constructing and validating models defined using decorators from
@dandi/model.
While ModelBuilder can be used on its own, is used by several other
Dandi packages to provide automatic construction and validation of
data models:
@dandi/mvc- data binding and validation by@RequestBody(),@PathParam(), and@QueryParam()@dandi/data- validates integrity of database connection configuration@dandi-contrib/data-pg- converts data from their database representations to their defined models when usingqueryModelandqueryModelSingle@dandi-contrib/aws-lambda- converts incoming AWS event data to Dandi models
ModelBuilder
The ModelBuilder interface exposes two methods for working with models.
constructModel is used for converting a POJO ("Plain Old JavaScript
Object") into an instance of a desired model class. constructMember is
used to convert individual values to a specified type.
ModelBuilderOptions
Providing options to constructModel or constructMember calls will
allow you to configure validation, transform the keys of your source
object, or for constructModel, transform the source object itself
before construction.
validators: An array ofModelValidatorinstances that will be used to validate the constructed model.keyTransform: AKeyTransformFnthat will be used to modify the keys of the source object when mapping properties to the constructed model. This is useful when dealing with external data sources that provide data is in one case (e.g.snake_case), and your models are written in another (hopefully,camelCase).dataTransformers: An array ofDataTransformerinstances that will modify the source object before starting construction of the model. This can be used to do just about anything, but as an example, it can be used with@dandi-contrib/data-pgandNestedKeyTransformerto convert a flat POJO with dot notated keys to a complex object with nested properties.
MetadataModelBuilder
MetadataModelBuilder is the default implementation of ModelBuilder
and is included in the @dandi/model-builder package.
MetadataModelBuilder uses the metadata generated by using decorators
from @dandi/model to define a model. Some things to note about using
MetadataModelBuilder:
- Nested models are supported - it will recurse into each complex type
and convert any properties defined by the
@dandi/modeldecorators. - When using the
keyTransformoption, it will not transform the keys ofMapproperties (defined with@MapOf()), or JSON properties (specified by adding@Json()).
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago