fix: filter target key with single item array

This commit is contained in:
Chareice 2024-11-11 21:51:41 +08:00
parent af9465e2c8
commit 416450d470
No known key found for this signature in database
3 changed files with 79 additions and 0 deletions

View File

@ -0,0 +1,75 @@
import Database, { mockDatabase } from '@nocobase/database';
describe('single filter target key', () => {
let db: Database;
beforeEach(async () => {
db = mockDatabase();
await db.clean({ drop: true });
});
afterEach(async () => {
await db.close();
});
it('should update by filter target key', async () => {
const Student = db.collection({
name: 'students',
autoGenId: false,
filterTargetKey: ['name'],
fields: [
{
name: 'name',
type: 'string',
primaryKey: true,
},
{
name: 'age',
type: 'integer',
},
],
});
await db.sync();
const s1 = await Student.repository.create({
values: {
name: 's1',
age: 10,
},
});
const s2 = await Student.repository.create({
values: {
name: 's2',
age: 10,
},
});
const s3 = await Student.repository.create({
values: {
name: 's3',
age: 10,
},
});
await Student.repository.update({
filter: {
name: 's3',
},
values: {
age: 20,
},
});
await s3.reload();
expect(s3.age).toBe(20);
const s3Instance = await Student.repository.findOne({
filterByTk: 's3',
});
expect(s3Instance.age).toBe(20);
});
});

View File

@ -175,6 +175,10 @@ export class Collection<
const targetKey = this.options?.filterTargetKey;
if (Array.isArray(targetKey)) {
if (targetKey.length === 1) {
return targetKey[0];
}
return targetKey;
}