使用mongodb时使用Strapi异步锁

问题描述

我正在尝试实现一个简单的api请求,当用户发送发布请求时,该请求会增加服务器上的个人余额。

现在,我担心有人会尝试同时发送两次邮寄请求,这将导致交易进行两次。

addFreeze:async ctx=>{
        const { id,isAdmin = false,profile} = await strapi.plugins[
          'users-permissions'
            ].services.jwt.getToken(ctx);
        const {amount} = ctx.request.body
        const balance = await strapi.query('balance').model.findOne(
            {_id: "5f319bd650d74b153c8329dd"})
        if(balance.earnings-balance.frozen > amount){
            return ctx.forbidden({"message":"Insufficient balance"})
        }

        const result = await strapi.query('balance').model.findOneAndUpdate(
            {_id: "5f319bd650d74b153c8329dd"},{
                $inc:{
                    frozen:1000
            }
        });
        return ctx.send({"message":result})

这可能是一种假设情况,但也可以扩展到其他几个地方。所以我的问题是有没有办法在stradi mongodb中添加异步锁。对于如何在Stradi中实现此目标或实际上是否可能是一个问题,我完全空白。

如果我的问题有疑问,请在评论中突出显示。这些类型的问题通常会被否决。如果有任何缺陷,我将很乐意对其进行编辑。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)