uni-app uniCloud循环更新BUG 希望大佬给个有效方案或者解决

uni-app uniCloud循环更新BUG 希望大佬给个有效方案或者解决

示例代码:

userList.data.forEach(async (e) => {
await db.collection("shareholders").where({
_id: '608268eba3a24100014e74e0'
}).update({
username: "divid11"
})
})

封装一个异步函数。调用也无效。各种方法都用了. 用.doc 更新也没用。用条件更新也没用。set全部更新也无效。

操作步骤:

测试了很多遍。以为是传参问题。结果给成固定值,再循环外测试有效。在里面无效

预期结果:

没有结果

实际结果:

再循环内无效。循环外有效修改

bug描述:

循环更新数据时不执行修改语句,数据库没有得到有效的更改。 修改语句再循环外的时候。有效的更新了数据库的数据


更多关于uni-app uniCloud循环更新BUG 希望大佬给个有效方案或者解决的实战教程也可以访问 https://www.itying.com/category-93-b0.html

6 回复

无人问津的 问题吗?大佬们,没有遇到过此类问题吗,希望能够得到有效的解决方案。谢谢

更多关于uni-app uniCloud循环更新BUG 希望大佬给个有效方案或者解决的实战教程也可以访问 https://www.itying.com/category-93-b0.html


用递归 解决了此方法。。感谢node.js 给我带来的困扰

forEach 每次都会执行那个async函数,并不是循环执行函数里面的逻辑,换成for(let i = 0; …)这种 外面包一层saync函数,循环体里面执行await就可以

把forEach改成for循环即可,async和forEach是没法这么搭配使用的

求代码,大佬

这是一个典型的异步循环处理问题。在 forEach 中使用 async/await 不会按预期等待每个异步操作完成。

解决方案:

使用 for...of 循环替代 forEach

for (const e of userList.data) {
  await db.collection("shareholders").where({
    _id: '608268eba3a24100014e74e0'
  }).update({
    username: "divid11"
  })
}

或者使用 Promise.all 并行处理:

await Promise.all(userList.data.map(async (e) => {
  await db.collection("shareholders").where({
    _id: '608268eba3a24100014e74e0'
  }).update({
    username: "divid11"
  })
}))
回到顶部