【发布时间】:2019-06-01 06:39:28
【问题描述】:
在下面的代码中卡住了承诺链。
我的实时数据库有两个节点。用户和订单。 我有存储奖励金额的用户。创建新订单时,我有一个订单数据库触发器。我在创建触发器中的要求是从用户节点获取奖励金额并扣除订单金额,然后将新值更新回用户。
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)
)
})
这是将值从第一个承诺传递给另一个承诺的正确方法吗?
【问题讨论】:
标签: firebase firebase-realtime-database promise google-cloud-functions