From 52acf6aa6f1f335e899c572bcc8fdd07ab6a3548 Mon Sep 17 00:00:00 2001 From: rijkvanzanten Date: Thu, 3 Jun 2021 20:58:35 -0400 Subject: [PATCH] Ignore nested updates when only the primary key is provided Fixes #6041 --- api/src/services/payload.ts | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/api/src/services/payload.ts b/api/src/services/payload.ts index 39ebd93d9dcb9..63bd7c6bed3b6 100644 --- a/api/src/services/payload.ts +++ b/api/src/services/payload.ts @@ -2,7 +2,7 @@ import argon2 from 'argon2'; import { format, formatISO, parse, parseISO } from 'date-fns'; import Joi from 'joi'; import { Knex } from 'knex'; -import { clone, cloneDeep, isObject, isPlainObject } from 'lodash'; +import { clone, cloneDeep, isObject, isPlainObject, omit } from 'lodash'; import { v4 as uuidv4 } from 'uuid'; import getDatabase from '../database'; import { ForbiddenException, InvalidPayloadException } from '../exceptions'; @@ -331,7 +331,13 @@ export class PayloadService { .first()); if (exists) { - await itemsService.updateOne(relatedPrimaryKey, relatedRecord); + const fieldsToUpdate = omit(relatedRecord, relatedPrimary); + + if (Object.keys(fieldsToUpdate).length > 0) { + await itemsService.updateOne(relatedPrimaryKey, relatedRecord, { + onRevisionCreate: (id) => revisions.push(id), + }); + } } else { relatedPrimaryKey = await itemsService.createOne(relatedRecord, { onRevisionCreate: (id) => revisions.push(id), @@ -393,9 +399,13 @@ export class PayloadService { .first()); if (exists) { - await itemsService.updateOne(relatedPrimaryKey, relatedRecord, { - onRevisionCreate: (id) => revisions.push(id), - }); + const fieldsToUpdate = omit(relatedRecord, relatedPrimaryKeyField); + + if (Object.keys(fieldsToUpdate).length > 0) { + await itemsService.updateOne(relatedPrimaryKey, relatedRecord, { + onRevisionCreate: (id) => revisions.push(id), + }); + } } else { relatedPrimaryKey = await itemsService.createOne(relatedRecord, { onRevisionCreate: (id) => revisions.push(id),