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
无人问津的 问题吗?大佬们,没有遇到过此类问题吗,希望能够得到有效的解决方案。谢谢
更多关于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"
})
}))

