From 4ff1137af5ab447600cc90834e3c9a18180db1d8 Mon Sep 17 00:00:00 2001 From: Wing-Kam Wong Date: Fri, 24 Jun 2022 23:09:51 +0800 Subject: [PATCH] fix: avoid using replaceAll --- .../lib/db/sql-data-mapper/lib/sql/helpers/sanitize.ts | 6 ++++-- packages/nocodb/src/lib/models/Model.ts | 8 +++++++- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/packages/nocodb/src/lib/db/sql-data-mapper/lib/sql/helpers/sanitize.ts b/packages/nocodb/src/lib/db/sql-data-mapper/lib/sql/helpers/sanitize.ts index f52d6666ad..a98be3b9e7 100644 --- a/packages/nocodb/src/lib/db/sql-data-mapper/lib/sql/helpers/sanitize.ts +++ b/packages/nocodb/src/lib/db/sql-data-mapper/lib/sql/helpers/sanitize.ts @@ -1,7 +1,9 @@ export function sanitize(v) { - return v?.replaceAll('?', '\\\\?'); + return v?.replace(/([^\\]|^)(\?+)/g, (_, m1, m2) => { + return `${m1}${m2.split('?').join('\\?')}`; + }); } export function unsanitize(v) { - return v?.replaceAll('\\?', '?'); + return v?.replace(/\\[?]/g, '?'); } diff --git a/packages/nocodb/src/lib/models/Model.ts b/packages/nocodb/src/lib/models/Model.ts index d9dceedef2..9cbf4f7ebc 100644 --- a/packages/nocodb/src/lib/models/Model.ts +++ b/packages/nocodb/src/lib/models/Model.ts @@ -404,7 +404,13 @@ export default class Model implements TableType { for (const col of await this.getColumns()) { if (isVirtualCol(col)) continue; const val = data?.[col.column_name] ?? data?.[col.title]; - insertObj[col.column_name.replaceAll('?', '\\\\?')] = val; + if (val !== undefined) { + insertObj[ + col.column_name.replace(/([^\\]|^)(\?+)/g, (_, m1, m2) => { + return `${m1}${m2.split('?').join('\\?')}`; + }) + ] = val; + } } return insertObj; }