我们如何创建关系,但不允许更新其中一个表?和insertWithRelated和upsertGraph之间的区别

时间:2019-04-08 17:25:35

标签: knex.js objection.js

我只是在NodeJS Javascript应用程序中学习objectionJS,但是我对一件事感到困惑。

我有两个问题:

  1. 如果我有一个名为“ Groups”的表,并且要以ManyToMany样式(和链接表groups_users)插入“ Users”。我们如何生成查询,以便允许用户插入,并创建与组的关系,但禁止编辑组。这将防止通过客户端无意间编辑组表。我尝试了insertWithRelated和upsertGraph。我尝试了allowInsert,但是它说“没有权限”,或者它插入并更新了groups表。还有我们如何在HasMany关系中做到这一点。

  2. 有人可以解释为什么我要使用insertWithRelated和upsertGraph(或insertGraph)。我的对象回来的例子: 用户{username: _,密码:_ ,组:[{id:22,groupName:'myGroup'}]}。我想知道是否使用insertWithRelated,是否必须手动将其插入链接表?有区别吗?

非常感谢您!

1 个答案:

答案 0 :(得分:0)

  1. 在查询之前确认该组没有更改,或者限制可以使用allowUpsert https://vincit.github.io/objection.js/api/query-builder/mutate-methods.html#allowupsert

    进行补充的内容
  2. https://vincit.github.io/objection.js/api/query-builder/mutate-methods.html#insertwithrelated在insertWithRelated和insertGraph之间完全没有区别。另一方面,Upsert图则更加复杂和强大。