-
Notifications
You must be signed in to change notification settings - Fork 20
Open
Description
The sdkifyField is not checking for null value before parsing to correct attribute type.
dataverse-ify/src/dataverse-ify/sdkify/sdkify.ts
Lines 211 to 234 in 0c8321d
| switch (attributeType) { | |
| case AttributeTypes.EntityReference: | |
| ({ attributeValue, attributeLogicalName } = getEntityReference(entityRecord, field)); | |
| break; | |
| case AttributeTypes.Money: | |
| attributeValue = entityRecord[attributeLogicalName] as number; | |
| break; | |
| case AttributeTypes.MultiSelectOptionSetValue: | |
| attributeValue = getMultiSelectOptionSet(entityRecord, attributeLogicalName); | |
| break; | |
| case AttributeTypes.OptionSetValue: | |
| attributeValue = entityRecord[attributeLogicalName]; | |
| break; | |
| case AttributeTypes.EntityCollection: | |
| ({ attributeValue, isActivityPartiesField } = await getEntityCollection(field, entityMetadata, entityRecord)); | |
| break; | |
| case AttributeTypes.DateTime: | |
| attributeValue = new Date(Date.parse(entityRecord[attributeLogicalName] as string)); | |
| break; | |
| default: | |
| // Default - set primitive type value | |
| attributeValue = entityRecord[attributeLogicalName]; | |
| break; | |
| } |
For example, an attribute is of type datetime and entityRecord[attributeLogicalName] is null (line 228), parsing null value to a Date object will returns an invalid Date object.
I think we can check for undefined or null before parsing like this:
if (entityRecord[attributeLogicalName] === undefined || entityRecord[attributeLogicalName] === null){
attributeValue = entityRecord[attributeLogicalName]
} else {
switch (attributeType) {
case AttributeTypes.EntityReference:
({ attributeValue, attributeLogicalName } = getEntityReference(entityRecord, field));
break;
case AttributeTypes.Money:
attributeValue = entityRecord[attributeLogicalName] as number;
break;
case AttributeTypes.MultiSelectOptionSetValue:
attributeValue = getMultiSelectOptionSet(entityRecord, attributeLogicalName);
break;
case AttributeTypes.OptionSetValue:
attributeValue = entityRecord[attributeLogicalName];
break;
case AttributeTypes.EntityCollection:
({ attributeValue, isActivityPartiesField } = await getEntityCollection(field, entityMetadata, entityRecord));
break;
case AttributeTypes.DateTime:
attributeValue = new Date(Date.parse(entityRecord[attributeLogicalName] as string));
break;
default:
// Default - set primitive type value
attributeValue = entityRecord[attributeLogicalName];
break;
}
}
entityRecord[attributeLogicalName] = attributeValue;Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels