mirror of
https://gitee.com/nocobase/nocobase.git
synced 2025-07-02 03:02:19 +08:00
fix: filter target key with single item array
This commit is contained in:
parent
af9465e2c8
commit
416450d470
@ -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);
|
||||
});
|
||||
});
|
@ -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;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user