如何在不创建模型的情况下插入对模型的引用?

时间:2019-04-27 06:27:48

标签: node.js knex.js objection.js

我有一个模型A,该模型可以有一个或多个与模型B关联的行。关系只需走一条路。

我跑了

result = await A.query()
  .where('id', 123) // 123 is an already existing model A
  .insertGraph([
    {
      B: [{id: 456}] // 456 is an already existing model B
    }
   ]);

但是我收到错误消息Key (id)=(456) already exists.

据我了解,Objection试图创建一个ID为456的新模型B,我只想在两行A:123和B:456之间添加一个关系。

1 个答案:

答案 0 :(得分:1)

由于您正在更新,因此我不会使用p <- autoplot(lm(Petal.Width ~ Petal.Length, data = iris), label.size = 3) gridExtra::grid.arrange(grobs = p@plots, top = "some title") 。可以通过insertGraph()upsertGraph()来完成。但是这种方法有点复杂,理想情况下我会这样做:

refs

使用const a = await A .query() .findById(123); const numRelatedRows = await a.$relatedQuery('B') .relate(456) ,您将以这种方式关联孩子456,但是其余孩子(如果存在)将是不相关的。您可以使用许多选项来修改upsert的行为,但是对我而言,upsertGraph()是可行的方法:

$relatedQuery()