mirror of
https://github.com/nocobase/nocobase
synced 2024-11-15 06:15:11 +00:00
fix: use database hook to trigger add createdBy/updatedBy fields
This commit is contained in:
parent
272b64b81b
commit
184adb924d
@ -62,7 +62,7 @@ describe('user fields', () => {
|
||||
});
|
||||
|
||||
// TODO(bug): 重复添加字段不能与 fields 表同步,应做到同步
|
||||
it.only('add model and then add createdBy/updatedBy field', async () => {
|
||||
it('add model and then add createdBy/updatedBy field', async () => {
|
||||
const Collection = db.getModel('collections');
|
||||
const collection = await Collection.import({
|
||||
name: 'posts',
|
||||
|
@ -1,4 +1,4 @@
|
||||
function makeOptions(type: string, options: any) {
|
||||
export function makeOptions(type: string, options: any) {
|
||||
if (!options) {
|
||||
return;
|
||||
}
|
||||
@ -21,22 +21,30 @@ function makeOptions(type: string, options: any) {
|
||||
};
|
||||
}
|
||||
|
||||
export default async function(model, options) {
|
||||
const { database } = model;
|
||||
const tableName = model.get('name') as string;
|
||||
const table = database.getTable(tableName);
|
||||
export default async function(table) {
|
||||
const { createdBy, updatedBy } = table.getOptions();
|
||||
const fieldsToMake = { createdBy, updatedBy };
|
||||
const addedFields = Object.keys(fieldsToMake)
|
||||
Object.keys(fieldsToMake)
|
||||
.filter(type => Boolean(fieldsToMake[type]))
|
||||
.map(type => table.addField(makeOptions(type, fieldsToMake[type])));
|
||||
|
||||
if (addedFields.length) {
|
||||
await table.sync({
|
||||
force: false,
|
||||
alter: {
|
||||
drop: false,
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
// export default async function(model, options) {
|
||||
// const { database } = model;
|
||||
// const tableName = model.get('name') as string;
|
||||
// const table = database.getTable(tableName);
|
||||
// const { createdBy, updatedBy } = table.getOptions();
|
||||
// const fieldsToMake = { createdBy, updatedBy };
|
||||
// const addedFields = Object.keys(fieldsToMake)
|
||||
// .filter(type => Boolean(fieldsToMake[type]))
|
||||
// .map(type => table.addField(makeOptions(type, fieldsToMake[type])));
|
||||
|
||||
// if (addedFields.length) {
|
||||
// await table.sync({
|
||||
// force: false,
|
||||
// alter: {
|
||||
// drop: false,
|
||||
// }
|
||||
// });
|
||||
// }
|
||||
// }
|
||||
|
@ -4,13 +4,12 @@ import Database, { registerFields } from '@nocobase/database';
|
||||
import Resourcer from '@nocobase/resourcer';
|
||||
|
||||
import * as fields from './fields';
|
||||
import hooks from './hooks';
|
||||
// import hooks from './hooks';
|
||||
import login from './actions/login';
|
||||
import register from './actions/register';
|
||||
import logout from './actions/logout';
|
||||
import check from './actions/check';
|
||||
|
||||
|
||||
import { makeOptions } from './hooks/collection-after-create';
|
||||
|
||||
export default async function (options = {}) {
|
||||
const database: Database = this.database;
|
||||
@ -22,7 +21,15 @@ export default async function (options = {}) {
|
||||
directory: path.resolve(__dirname, 'collections'),
|
||||
});
|
||||
|
||||
hooks.call(this);
|
||||
database.addHook('afterTableInit', (table) => {
|
||||
const { createdBy, updatedBy } = table.getOptions();
|
||||
const fieldsToMake = { createdBy, updatedBy };
|
||||
Object.keys(fieldsToMake)
|
||||
.filter(type => Boolean(fieldsToMake[type]))
|
||||
.map(type => table.addField(makeOptions(type, fieldsToMake[type])));
|
||||
});
|
||||
|
||||
// hooks.call(this);
|
||||
|
||||
resourcer.registerActionHandlers({
|
||||
'users:login': login,
|
||||
|
Loading…
Reference in New Issue
Block a user