From 82126f29e6d0cf6851b578253beeaaec6386dabe Mon Sep 17 00:00:00 2001 From: Kevin Ansfield Date: Fri, 2 Oct 2020 11:28:57 +0100 Subject: [PATCH] Added guard for member rows having missing data when creating email recipients no issue - we've had an issue with emails failing due to unexpectedly missing data when inserting email recipient rows - added a validation check before adding recipient details along with a log so that invalid data can be investigated --- core/server/services/mega/mega.js | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/core/server/services/mega/mega.js b/core/server/services/mega/mega.js index f82c0d7742..4867efb011 100644 --- a/core/server/services/mega/mega.js +++ b/core/server/services/mega/mega.js @@ -274,8 +274,15 @@ async function createEmailBatches({emailModel, options}) { const knexOptions = _.pick(options, ['transacting', 'forUpdate']); const batchModel = await models.EmailBatch.add({email_id: emailModel.id}, knexOptions); - const recipientData = recipients.map((memberRow) => { - return { + const recipientData = []; + + recipients.forEach((memberRow) => { + if (!memberRow.id || !memberRow.uuid || !memberRow.email) { + logging.warn(`Member row not included as email recipient due to missing data - id: ${memberRow.id}, uuid: ${memberRow.uuid}, email: ${memberRow.email}`); + return; + } + + recipientData.push({ id: ObjectID.generate(), email_id: emailModel.id, member_id: memberRow.id, @@ -283,7 +290,7 @@ async function createEmailBatches({emailModel, options}) { member_uuid: memberRow.uuid, member_email: memberRow.email, member_name: memberRow.name - }; + }); }); await db.knex('email_recipients').insert(recipientData);