Возражение js граф вставки не вставляется в связанную через модель - PullRequest
0 голосов
/ 31 октября 2018

Я сейчас пытаюсь сохранить данные и связать их с таблицей соединений. До сих пор модель отношения возражений, кажется, хорошо работает с этими двумя моделями.

Игры:

  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, так что не следовало ли это с ошибкой при первой попытке установки?

Ошибка: (node:10428) error: duplicate key value violates unique constraint "platforms_pkey"

...