prisma orm 函数的不可预知行为

Unpredictable behavior of prisma orm function

提问人:MindW1n 提问时间:11/15/2023 更新时间:11/15/2023 访问量:32

问:

在我的 api 中使用 prisma.instance.update() 函数时,我遇到了不可预测的行为。下面是一些代码:

else if(allocationsGroupId != null) prisma.allocation.findMany({ where: { allocationsGroupId } }).then((allocations) => {
            
        const commonPercent = allocations.reduce((total, allocation) => total + allocation.percent, 0)

        Promise.all(allocations.map((allocation) => prisma.allocation.update({

            where: { id: allocation.id },
            data: { money: allocation.money + amount * allocation.percent / commonPercent}

        }))).then()
    })

如果我在使用 Prisma 更新函数时不调用 .then() 方法,它根本不会更新数据库。因此,我将所有这些承诺包装在一个 Promise.all 中,并在该承诺上调用了 .then。但问题是:为什么我需要使用 .then() 方法才能解析 promise?

JavaScript 节点:.js 下一个 .js Prisma

评论

0赞 Matt 11/15/2023
承诺不需要 .代码确实需要等待或返回承诺,因此在承诺解决之前,代码不会继续。.then().all
0赞 MindW1n 11/15/2023
但同步代码不需要等待 promise 解析。那么异步编程的意义何在呢?
0赞 Matt 11/15/2023
如果 promise 的完成对流程不重要,则可以将其留待后台解决。这些承诺应该有一个 then,这样你就不会得到未经处理的拒绝。catch
0赞 Matt 11/15/2023
您能否为运行此代码的函数提供更多上下文?
0赞 MindW1n 11/15/2023
当然可以!此代码是下一个 js api 路由的一部分,该路由是一个异步函数。完整的代码是开源的,你可以在这里看到它:github.com/MindW1n/RobofinancierNextJs/tree/master。此示例中的代码位于 app/api/editLedgerEntry 中

答: 暂无答案