From 46309f33a208a910eb8d978ce917c2207cf93086 Mon Sep 17 00:00:00 2001 From: James Date: Thu, 13 Aug 2020 09:18:02 -0400 Subject: [PATCH] properly sets default values if no value present on update or create --- src/fields/performFieldOperations.js | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/fields/performFieldOperations.js b/src/fields/performFieldOperations.js index 86f45cf2ec..c553438540 100644 --- a/src/fields/performFieldOperations.js +++ b/src/fields/performFieldOperations.js @@ -290,14 +290,19 @@ async function performFieldOperations(entityConfig, args) { } } - if (operation === 'create' || operation === 'update') { + if ((operation === 'create' || operation === 'update') && field.name) { + const updatedData = data; + + if (data[field.name] === undefined && originalDoc[field.name] === undefined && field.defaultValue) { + updatedData[field.name] = field.defaultValue; + } + if (field.type === 'array' || field.type === 'blocks') { const hasRowsOfNewData = Array.isArray(data[field.name]); const newRowCount = hasRowsOfNewData ? data[field.name].length : 0; // Handle cases of arrays being intentionally set to 0 if (data[field.name] === '0' || data[field.name] === 0 || data[field.name] === null) { - const updatedData = data; updatedData[field.name] = []; } @@ -305,7 +310,7 @@ async function performFieldOperations(entityConfig, args) { const existingRowCount = hasRowsOfExistingData ? originalDoc[field.name].length : 0; validationPromises.push(() => createValidationPromise({ [field.name]: newRowCount }, { [field.name]: existingRowCount }, field, path)); - } else if (field.name) { + } else { validationPromises.push(() => createValidationPromise(data, originalDoc, field, path, true)); } }