首页 > 解决方案 > 反对 insertGraph,插入新的并关联或关联到现有行

问题描述

所以,我对 MySQL 关系、更新插入等不是超级知识。我正在寻找有关如何(如果?)这样做的解释。

[
  {
    scheduledAt: '17:55',
    league: { name: 'Champions League - Group Stage' }
  },
  {
    scheduled_at: '19:45',
    league: { name: 'Champions League - Group Stage' }
  },
  {
    scheduled_at: '19:30',
    league: { name: 'Primera B Metropolitana' },
  },
  {
    scheduled_at: '21:00',
    league: { name: 'Primera B Metropolitana' }
  }
]

假设我想插入这个数据图。根对象将进入fixtures表中,league属性是Fixtures模型中的这种关系。

{  
  league: {
    relation: Model.BelongsToOneRelation,
    modelClass: `${__dirname}/League`,
    join: {
      from: 'fixtures.league_id',
      to: 'leagues.id'
    }
  }
}

所以,目前如果我insertGraph用来插入所有这些数据。它像您期望的那样插入到fixtures和表中并关联。leagues

{
  "scheduled_at": "17:55",
  "league": {
    "name": "Champions League - Group Stage",
    "created_at": "2018-10-03T13:02:03.995Z",
    "id": 1
  },
  "league_id": 1
  "created_at": "2018-10-03T13:02:04.042Z",
  "id": 1
}

但是,如果我插入完全相同的联赛对象,它只会创建另一个重复的联赛和夹具行,并具有下一个递增的 ID(在本例中为 2)。

是否可以查找是否存在具有该名称的联赛,然后使用该行/ID 作为league_id,如下所示:

{
  "scheduled_at": "17.55",
  "league_id": 1
  "created_at": "2018-10-03T13:02:04.042Z",
  "id": 2
}

对不起,如果我已经解释了这个可怕的。但我对术语不太感兴趣,所以我不知道我真正想要做什么。我觉得这是一件超级容易的事情,但也许我的结构或方法是错误的。

标签: javascriptmysqlnode.jsknex.jsobjection.js

解决方案


推荐阅读