Насколько я знаю, невозможно создать собственную модель для этой таблицы трехстороннего соединения.
Таким образом, модели будут выглядеть примерно так:
class User extends objection.Model {
static get tableName() {
return 'user';
}
static get relationMappings() {
return {
platformPasswords: {
relation: Model.HasManyRelation,
modelClass: UserPlatformPassword,
join: {
from: 'user.id',
to: 'user_platform_password.user_id'
}
}
}
}
}
class Platform extends objection.Model {
static get tableName() {
return 'platform';
}
}
class Password extends objection.Model {
static get tableName() {
return 'password';
}
}
class UserPlatformPassword extends objection.Model {
static get tableName() {
return 'user_platform_password';
}
static get relationMappings() {
return {
password: {
relation: Model.HasOne,
modelClass: Password,
join: {
from: 'user_platform_password.password_id',
to: 'password.id'
}
},
platform: {
relation: Model.HasOne,
modelClass: Platform,
join: {
from: 'user_platform_password.platform_id',
to: 'platform.id'
}
}
}
}
}
Может быть, есть и другие способы смоделировать эти отношения, по крайней мере, таким образом, чтобы они работали, когда вы делаете энергичный выбор, но мне трудно понять, как это может работать в случае, когда вы хотите вставить / отменить это вложенные данные, где несколько отношений имеют дело с разными полями одной и той же таблицы соединений.