diff --git a/packages/core/src/utils.ts b/packages/core/src/utils.ts index 1f7c67fa26..bf3e4982ea 100644 --- a/packages/core/src/utils.ts +++ b/packages/core/src/utils.ts @@ -511,7 +511,7 @@ export function cutObjectArray (obj: any): any { } else Object.assign(r, { [key]: obj[key] }) continue } - if (typeof obj[key] === 'object') { + if (typeof obj[key] === 'object' && obj[key] !== null) { Object.assign(r, { [key]: cutObjectArray(obj[key]) }) continue } diff --git a/server/tool/src/index.ts b/server/tool/src/index.ts index deef43a26e..bfd2727734 100644 --- a/server/tool/src/index.ts +++ b/server/tool/src/index.ts @@ -279,7 +279,12 @@ async function createUpdateIndexes (connection: CoreClient, db: Db, logger: Mode const bb: (string | FieldIndex<Doc>)[] = [] for (const vv of v.values()) { try { - await collection.createIndex(vv) + const key = typeof vv === 'string' ? vv : Object.keys(vv)[0] + const name = typeof vv === 'string' ? `${key}_1` : `${key}_${vv[key]}` + const exists = await collection.indexExists(name) + if (!exists) { + await collection.createIndex(vv) + } } catch (err: any) { logger.log('error', JSON.stringify(err)) }