代码之家  ›  专栏  ›  技术社区  ›  Moblize IT

firebase实时数据库触发器中的承诺链问题

  •  0
  • Moblize IT  · 技术社区  · 7 年前

    在我下面的代码中被困在承诺链中。

    我有一些用户存储了奖励金额。当创建新订单时,我在订单上有一个db触发器。我在create触发器中的要求是从users节点获取奖励金额,扣除订单金额,然后将新值更新回用户。

    exports.on_order_received_deduct_doodle_cash = functions.database.ref("/orders/{id}")
    .onCreate((change, context) => {
    
      const order = change.val();
      const customerObj = order.customer
      const orderObj = order.order
      const afterDiscount = orderObj._afterDiscount
      const uid = customerObj._uid
    
        var db = admin.database();
        const userRef = db.ref('users/')
        return userRef.child(uid).once("value").then(
            (resp) => {
                  const userObj = resp.val()
                  const doodleCash = userObj._doodleCash
                  console.log("user current doodle cash is::" + doodleCash)
                  return doodleCash
            }
        ).then(
            (doodleCash) => {
    
                    if(doodleCash > afterDiscount){
                        const val = doodleCash - afterDiscount
                        return userRef.child(uid).update({"_doodleCash" : val})
                    }else{
                        console.error("cannot be a negative value")
                        return null
                    }
    
            }
        ).catch(
            (err) => console.error("something went wrong:" + err)
        )
    })
    

    这是将价值从第一个承诺传递给另一个承诺的正确方式吗?

    1 回复  |  直到 7 年前