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

How can we create a relationship, but disallow updating one of the tables? and difference between insertWithRelated vs. upsertGraph

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

我有两个问题:

  1. 如果我有一个名为 "Groups" 的 table 并且我正在以 ManyToMany 样式插入 "Users"(以及一个 link table groups_users)。我们如何生成查询以允许插入用户,并创建与组的关系,但禁止编辑组。这将防止通过客户端无意中编辑组 table。我尝试了 insertWithRelated 和 upsertGraph。我尝试了 allowInsert,但它显示 "no permissions" 或者它插入并更新组 table。还有我们如何在 HasMany 关系中做到这一点。

  2. 谁能解释一下为什么我会使用 insertWithRelated 与 upsertGraph(或 insertGraph)。我的对象回来的例子: 用户{用户名:_,密码:_,组:[{id: 22,组名:'myGroup'}]}。我想知道如果我使用insertWithRelated,我是否必须手动插入link table?有区别吗?

非常感谢您!!

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

  2. 更新的内容
  3. https://vincit.github.io/objection.js/api/query-builder/mutate-methods.html#insertwithrelated insertWithRelated 和 insertGraph 之间没有任何区别。另一方面,Upsert 图要复杂和强大得多。