- @override
Populates the properties of a this instance from a map.
This method will thrown an exception if a key in the map does not match a property of the receiver.
Usage: var values = JSON.decode(requestBody); var user = new User() ..readFromMap(values);
Source
@override void readFromMap(Map<String, dynamic> keyValues) { var mirror = reflect(this); keyValues.forEach((k, v) { var property = entity.properties[k]; if (property == null) { throw new QueryException(QueryExceptionEvent.requestFailure, message: "Key $k does not exist for ${MirrorSystem.getName(mirror.type.simpleName)}"); } if (property is ManagedAttributeDescription) { if (!property.isTransient) { backing.setValueForProperty(entity, k, _valueDecoder(property, v)); } else { if (!property.transientStatus.isAvailableAsInput) { throw new QueryException(QueryExceptionEvent.requestFailure, message: "Key $k does not exist for ${MirrorSystem.getName(mirror.type.simpleName)}"); } var decodedValue = _valueDecoder(property, v); if (!property.isAssignableWith(decodedValue)) { var valueTypeName = MirrorSystem.getName(reflect(decodedValue).type.simpleName); throw new QueryException(QueryExceptionEvent.requestFailure, message: "Type mismatch for property ${property.name} on ${MirrorSystem.getName(entity.persistentType.simpleName)}, expected assignable type matching ${property.type} but got $valueTypeName."); } mirror.setField(new Symbol(k), decodedValue); } } else { backing.setValueForProperty(entity, k, _valueDecoder(property, v)); } }); }