我有一些要通过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.*
允许插入。但我想保留健全性检查
答案 0 :(得分:0)
似乎您是在指定relation2
模型的列,而不是子关系。 columnToPopulate1
是relation2
模型的子关系吗?顾名思义,它看起来像是模型的一列,这是错误的。
我认为您想使用一种关系在“ 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')
}
}