Custom Entity Fields
Extend entities with custom fields without modifying core code.
Overviewโ
Custom entity fields allow tenants to add additional metadata fields to standard entities (Employee, Organization, etc.) without modifying the database schema directly.
How It Worksโ
- Custom field definitions are stored as configuration
- Field values are stored in a JSON column or related table
- Custom fields are returned alongside standard entity data
Supported Field Typesโ
| Type | Description |
|---|---|
| Text | Single-line text input |
| TextArea | Multi-line text |
| Number | Numeric value |
| Boolean | True/false toggle |
| Date | Date picker |
| Select | Dropdown selection |
Implementationโ
Custom fields use the CustomEntityFields decorator system:
@MultiORMEntity("employee")
export class Employee extends TenantOrganizationBaseEntity {
// Standard fields...
@MultiORMColumn({ type: "json", nullable: true })
customFields?: Record<string, any>;
}
Multi-ORM Considerationsโ
When using custom entity fields with MikroORM, ensure the MultiORM decorators are correctly applied. MikroORM 6.x has stricter metadata validation โ see the Known Issues section.
Known Issueโ
MikroORM 6.x may throw errors with custom entity decorators on TypeORM-only entities. The fix involves conditional decorator application based on DB_ORM:
// Conditionally apply based on active ORM
if (process.env.DB_ORM === "mikro-orm") {
// Apply MikroORM decorator
} else {
// Apply TypeORM decorator
}
Related Pagesโ
- Multi-ORM Deep Dive โ ORM patterns
- Entity Reference โ all entities