thinkjs中updateMany的BUG问题
Posted 忠杰的博客
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了thinkjs中updateMany的BUG问题相关的知识,希望对你有一定的参考价值。
如果把model先定义好变量,查询时用此变量,批量更新时就不能再用此变量了,会报重复ID错误。
解决办法是重新定义model变量,或直接this.model(‘xxx‘)。
以下为场景复原
const sql = `...` const model = this.model(‘xxx‘) const assertRecords = await model.where(condition).query(sql) if (!think.isEmpty(assertRecords)) { let willClearItems = assertRecords.map(e => { return { id: e.id, score: 0 } }) await model.updateMany(willClearItems) //批量清零 }
这样会报错:
{ Error: ER_DUP_ENTRY: Duplicate entry ‘94‘ for key ‘PRIMARY‘
最后句话改为
await this.model(‘xxx‘).updateMany(willClearItems) //批量清零
就可以批量修改了
以上是关于thinkjs中updateMany的BUG问题的主要内容,如果未能解决你的问题,请参考以下文章
updateMany 操作结果中的 Mongoose 增量值 NaN
返回未更新的搜索值列表(Mongoose、updateMany)