Browse Source

make empty array valid when not required

pull/4434/head
Maurits Lourens 4 years ago
parent
commit
d9ecd3e3b3
  1. 17
      packages/server/src/api/controllers/row/utils.js

17
packages/server/src/api/controllers/row/utils.js

@ -61,12 +61,17 @@ exports.validate = async ({ appId, tableId, row, table }) => {
let res let res
// Validate.js doesn't seem to handle array // Validate.js doesn't seem to handle array
if (type === FieldTypes.ARRAY && row[fieldName] && row[fieldName].length) { if (type === FieldTypes.ARRAY && row[fieldName]) {
row[fieldName].map(val => { if (row[fieldName].length) {
if (!constraints.inclusion.includes(val)) { row[fieldName].map(val => {
errors[fieldName] = "Field not in list" if (!constraints.inclusion.includes(val)) {
} errors[fieldName] = "Field not in list"
}) }
})
} else if (constraints.presence && row[fieldName].length === 0) {
// 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.JSON && typeof row[fieldName] === "string") {
// this should only happen if there is an error // this should only happen if there is an error
try { try {

Loading…
Cancel
Save