在我下面的代码中被困在承诺链中。
我有一些用户存储了奖励金额。当创建新订单时,我在订单上有一个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)
)
})
这是将价值从第一个承诺传递给另一个承诺的正确方式吗?