From 194da4bee199d7364c812debbadd1582e4738414 Mon Sep 17 00:00:00 2001 From: Mel O'Hagan Date: Tue, 1 Nov 2022 15:59:04 +0000 Subject: [PATCH] Map attachment string to array if needed --- packages/server/src/api/controllers/row/utils.js | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/packages/server/src/api/controllers/row/utils.js b/packages/server/src/api/controllers/row/utils.js index 4c837e7630..ca2ad02a30 100644 --- a/packages/server/src/api/controllers/row/utils.js +++ b/packages/server/src/api/controllers/row/utils.js @@ -82,10 +82,20 @@ exports.validate = async ({ tableId, row, table }) => { // non required MultiSelect creates an empty array, which should not throw errors errors[fieldName] = [`${fieldName} is required`] } - } else if (type === FieldTypes.JSON && typeof row[fieldName] === "string") { + } else if ( + (type === FieldTypes.ATTACHMENT || type === FieldTypes.JSON) && + typeof row[fieldName] === "string" + ) { // this should only happen if there is an error try { - JSON.parse(row[fieldName]) + const json = JSON.parse(row[fieldName]) + if (type === FieldTypes.ATTACHMENT) { + if (Array.isArray(json)) { + row[fieldName] = json + } else { + errors[fieldName] = [`Must be an array`] + } + } } catch (err) { errors[fieldName] = [`Contains invalid JSON`] }