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

updateMany 找不到参数

返回未更新的搜索值列表(Mongoose、updateMany)

updateMany() 后如何获取所有更新文档的值?

mongoose 中的 UpdateMany 无法正常工作,但直接在 mongodb 中可以正常工作

updateMany在mongodb中,其中record = NaN to record = 0