指定只应插入列而不是向上插入

时间:2019-05-19 00:08:40

标签: node.js objection.js

我有一些要通过insertGraph插入的数据 ala ModelName .query(trx) .insertGraph(data) 的问题是我有一个allowInsert的防护人员,该防护人员应指定应填充的列。我有一列持有另一个表的外键。我不希望填充此列。我不断收到trying to upsert an unallowed relation。我不知道如何指定不应该填充foreignId。 我的代码在allowInsert后卫

下看起来像这样
ModelName
       .query(trx)
       .allowInsert([subrelation2.[columnToPopulate1, columnToPopulate2]])
       .insertGraph(data)

P.s。我尝试在foreignId条件下指定allowInsert无济于事。指定relation2.*允许插入。但我想保留健全性检查

1 个答案:

答案 0 :(得分:0)

似乎您是在指定relation2模型的列,而不是子关系。 columnToPopulate1relation2模型的子关系吗?顾名思义,它看起来像是模型的一列,这是错误的。

我认为您想使用一种关系在“ relation2”模型中插入两列。像这样:

let data = {
  modelNameColumn: 'value',
  relation2: {
    columnToPopulate1: 'value',
    columnToPopulate2: 'value',
  }
}

await ModelName
   .query(trx)
   .allowInsert('[relation2]')
   .insertGraph(data)

allowInsert方法中,您只能指定允许插入哪些关系,而不能定义哪些列。

如果要删除要更新的列的可能性,可以使用beforeUpdate()触发器:

class Model2 extends Model {
  async $beforeUpdate(opt, queryContext) {
    await super.$beforeUpdate(opt, queryContext);
    if (this.columnName) throw new Error('columnName shouldnt be updated')
  }
}