mirror of
https://gitee.com/nocobase/nocobase.git
synced 2025-07-01 18:52:20 +08:00
fix: update sql collection (#5909)
This commit is contained in:
parent
b7906cdfbf
commit
7eed6ef863
@ -135,19 +135,31 @@ describe('sql collection', () => {
|
||||
expect(fields.length).toBe(2);
|
||||
const loadedFields = db.getCollection('sqlCollection').fields;
|
||||
expect(loadedFields.size).toBe(2);
|
||||
await agent.resource('sqlCollection').update({
|
||||
const updateRes = await agent.resource('sqlCollection').update({
|
||||
filterByTk: 'sqlCollection',
|
||||
values: {
|
||||
key: collection.key,
|
||||
sql: 'select "testField1" from "fakeCollection"',
|
||||
name: 'sqlCollection',
|
||||
fields: [
|
||||
{
|
||||
name: 'testField1',
|
||||
type: 'string',
|
||||
interface: 'input',
|
||||
collectionName: 'sqlCollection',
|
||||
key: fields.find((f) => f.name === 'testField1').key,
|
||||
},
|
||||
],
|
||||
sources: ['fakeCollection'],
|
||||
},
|
||||
});
|
||||
expect(updateRes.status).toBe(200);
|
||||
|
||||
const listMetaRes = await agent.resource('collections').listMeta();
|
||||
const metaData = listMetaRes.body.data;
|
||||
const sqlCollectionData = metaData.find((item) => item.name === 'sqlCollection');
|
||||
const metaFields = sqlCollectionData.fields;
|
||||
expect(metaFields.length).toBe(1);
|
||||
const collection2 = await db.getRepository('collections').findOne({
|
||||
filter: {
|
||||
name: 'sqlCollection',
|
||||
|
@ -19,14 +19,24 @@ const updateCollection = async (ctx: Context, transaction: any) => {
|
||||
},
|
||||
transaction,
|
||||
});
|
||||
|
||||
const existFields = await collection.getFields({ transaction });
|
||||
|
||||
const deletedFields = existFields.filter((field: any) => !values.fields?.find((f: any) => f.name === field.name));
|
||||
|
||||
for (const field of deletedFields) {
|
||||
await field.destroy({ transaction });
|
||||
}
|
||||
|
||||
const upRes = await repo.update({
|
||||
filterByTk,
|
||||
values,
|
||||
values: {
|
||||
...values,
|
||||
fields: values.fields?.map((f: any) => {
|
||||
delete f.key;
|
||||
return f;
|
||||
}),
|
||||
},
|
||||
updateAssociationValues: ['fields'],
|
||||
transaction,
|
||||
});
|
||||
|
Loading…
x
Reference in New Issue
Block a user