账户
id | 电子邮件 | 电子邮件_已验证 | is_primary | 密码 | 图片网址 | 社交帐户_id | 用户名 | 创建于 | 更新于 |
---|---|---|---|---|---|---|---|---|---|
用户
id | 已启用 | 创建于 | 更新于 |
---|---|---|---|
用户帐户
账户 ID | 用户ID | 创建于 | 更新于 |
---|---|---|---|
正如您所注意到的,我的 user_accounts 表有一个复合主键(account_id、user_id),我如何在 adminbro/adminjs 上管理它?
我认为目前它会自动将其中之一作为主键
我的主要抱怨是我目前无法为此表创建任何记录
我的管理路线
import { sequelize } from '../../data/models';
import AdminBro from 'adminjs';
import AdminBroExpress from '@adminjs/express';
import AdminBroSequelize from '@adminjs/sequelize';
AdminBro.registerAdapter(AdminBroSequelize);
const adminBro = new AdminBro({
rootPath: '/admin',
resources: [
{
resource: sequelize.models.Account,
options: {
parent: {
name: 'Database',
icon: 'Api',
},
listProperties: [
'id',
'email',
'emailVerified',
'isPrimary',
'password',
'pictureUrl',
'socialAccountId',
'username',
],
},
},
{
resource: sequelize.models.User,
options: {
parent: {
name: 'Database',
icon: 'Api',
},
listProperties: ['id', 'enabled'],
},
},
{
resource: sequelize.models.UserAccount,
options: {
parent: {
name: 'Database',
icon: 'Api',
},
listProperties: ['id', 'accountId', 'userId'],
},
},
],
branding: {
companyName: 'API',
logo: false,
favicon: 'https://imagine.ai/img/favicon.ico',
withMadeWithLove: false,
},
});
const adminbroRouter = AdminBroExpress.buildRouter(adminBro);
export default adminbroRouter;
编辑1
UserAccount.model.ts
/* eslint import/no-cycle: "off" */
import { DataTypes } from 'sequelize';
import {
Model,
PrimaryKey,
Column,
Table,
Default,
IsUUID,
ForeignKey,
} from 'sequelize-typescript';
import { Account, User } from 'data/models';
@Table({
freezeTableName: true,
tableName: 'user_accounts',
})
export default class UserAccount extends Model {
@ForeignKey(() => Account)
@PrimaryKey
@IsUUID(4)
@Default(DataTypes.UUIDV4)
@Column
accountId: string;
@ForeignKey(() => User)
@PrimaryKey
@IsUUID(4)
@Default(DataTypes.UUIDV4)
@Column
userId: string;
}