如何使用Objection.js在多对多表中插入额外的值?

时间:2018-04-06 17:33:35

标签: javascript typescript objection.js

我有以下表格

foo     foo_bar    bar
---     -------    ---
id      foo_id     id
        bar_id     data
        num
        desc

foo  bar
---  ---
1    (to be inserted)
2

我希望将数据插入bar,将插入的条目链接到foo表上的现有元素,并使用多对多关系表foo_bar

显然我可以这样做:

await Bar.query()
  .allowInsert('[foo]')
  .upsertGraph({ data: 'todo', [{ id: 1 }]}, { relate: true });

我的Bar型号有

static get relationMappings() {
  return {
    foo: {
      join: {
        extra: ['num', 'desc'],
        from: 'bar.id',
        through: {
          from: 'foo_bar.bar_id',
          to: 'foo_bar.foo_id',
        },
        to: 'foo.id',
      },
      modelClass: Foo,
      relation: Model.ManyToManyRelation,
    },
  };
}

但是如何在num的{​​{1}}和desc中插入值?如何在中间表中插入值?

1 个答案:

答案 0 :(得分:0)

从文档中: 额外的属性:提取此处列出的列后,它们会自动连接到相关对象,并自动写入连接表,而不是插入时插入相关表。

您在模型中使用num和desc列提到了额外的属性,因此您可以将它们直接放入upsertGraph中,如下所示:

/home/pms-setup