diff --git a/packages/core/database/src/__tests__/repository/update.test.ts b/packages/core/database/src/__tests__/repository/update.test.ts index ee35b4c4c4..e9e03c59e6 100644 --- a/packages/core/database/src/__tests__/repository/update.test.ts +++ b/packages/core/database/src/__tests__/repository/update.test.ts @@ -87,6 +87,40 @@ describe('update', () => { await db.sync(); }); + it('should update collection that without primary key', async () => { + const collection = db.collection({ + name: 'without_pk', + autoGenId: false, + timestamps: false, + fields: [{ type: 'string', name: 'nameWithUnderscore' }], + }); + + await collection.sync(); + + await collection.repository.create({ + values: { + nameWithUnderscore: 'item1', + }, + }); + + await collection.repository.update({ + values: { + nameWithUnderscore: 'item2', + }, + filter: { + nameWithUnderscore: 'item1', + }, + }); + + const item = await collection.repository.findOne({ + filter: { + nameWithUnderscore: 'item2', + }, + }); + + expect(item).toBeDefined(); + }); + it('should throw error when update data conflicted', async () => { const t1 = await Tag.repository.create({ values: { diff --git a/packages/core/database/src/repository.ts b/packages/core/database/src/repository.ts index b6859be2c3..e3ba5c8b7f 100644 --- a/packages/core/database/src/repository.ts +++ b/packages/core/database/src/repository.ts @@ -22,6 +22,7 @@ import { FindOptions as SequelizeFindOptions, UpdateOptions as SequelizeUpdateOptions, Transactionable, + Utils, WhereOperators, } from 'sequelize'; @@ -420,6 +421,10 @@ export class Repository