diff --git a/packages/server/src/api/controllers/row/external.ts b/packages/server/src/api/controllers/row/external.ts index 32bd1f313a..d301155231 100644 --- a/packages/server/src/api/controllers/row/external.ts +++ b/packages/server/src/api/controllers/row/external.ts @@ -56,13 +56,18 @@ export async function patch(ctx: UserCtx) { throw { validation: validateResult.errors } } + const beforeRow = await sdk.rows.external.getRow(tableId, _id, { + relationships: true, + }) + const response = await handleRequest(Operation.UPDATE, tableId, { id: breakRowIdField(_id), row: dataToUpdate, }) // The id might have been changed, so the refetching would fail. Recalculating the id just in case - const updatedId = generateIdForRow(ctx.request.body, table) + const updatedId = + generateIdForRow({ ...beforeRow, ...dataToUpdate }, table) || _id const row = await sdk.rows.external.getRow(tableId, updatedId, { relationships: true, })