Возражение js upsert граф не вставляет в связанную через модель
В настоящее время я пытаюсь сохранить данные и связать их с таблицей соединений. До сих пор модель отношения возражений, кажется, хорошо работает с этими двумя моделями.
Игры:
static get relationMappings() {
const Platforms = require('./platforms');
return {
platforms: {
relation: Model.ManyToManyRelation,
modelClass: Platforms,
join: {
from: 'games.id',
through: {
from: 'games_platforms.game_id',
to: 'games_platforms.platform_id'
},
to: 'platforms.id'
}
}
}
}
Платформы:
static get relationMappings() {
const Games = require('./games');
return {
games: {
relation: Model.ManyToManyRelation,
modelClass: Games,
join: {
from: 'platforms.id',
through: {
from: 'games_platforms.platform_id',
to: 'games_platforms.game_id'
},
to: 'games.id'
}
}
}
}
Я пытаюсь использовать граф upsert для вставки игры и связанных с ней платформ в таблицу платформ, а также для создания записи соединения в таблице соединений. Я в настоящее время использую это:
const doc = await Games.query()
.upsertGraph(game, {
insertMissing: true,
relate: true,
});
Это вставляет игру и создает отношение, но не создает платформу в таблице платформы, если она не существует. если я использую:
const doc = await Games.query()
.upsertGraph(game, {
insertMissing: true,
});
Это делает оба, но вызовет ошибку ключа дублирования, когда игра использует платформу, которая была загружена до этого. Это я не совсем понимаю, потому что, если я запускаю это снова, он ломается в том же месте по той же причине, но данные уже находятся в таблице paltform, так что не должно ли это быть с ошибкой в первой попытке upsert?
Ошибка:(node:10428) error: duplicate key value violates unique constraint "platforms_pkey"