У меня есть это ниже триггера firebase
exports.on_order_received_deduct_doodle_cash = functions.database.ref("/orders/{id}")
.onCreate((snapshot, context) => {
console.log("start of on_order_received_deduct_doodle_cash")
const order = snapshot.val();
const customerObj = order.customer
const orderObj = order.order
const paymentType = orderObj._paymentType
console.log("payment type is::" + paymentType)
if(paymentType === 'DoodleCash'){
console.log("payment type is DoodleCash so deduct it from customer account")
const afterDiscount = orderObj._afterDiscount
const uid = customerObj._uid
console.log("Customer uid is::" + uid)
var db = admin.database();
const userRef = db.ref('users/')
userRef.child(uid).once("value").then(
(resp) => {
console.log("user value:" + JSON.stringify(resp))
const userObj = resp.val()
let doodleCash = userObj._doodleCash
console.log("user current doodle cash is::" + doodleCash)
if(doodleCash === undefined)
doodleCash = 0
if(doodleCash > afterDiscount){
const val = doodleCash - afterDiscount
console.log("new doodle cash will be:" + val)
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)
return null
}
)
}else{
return null
}
})
Это одно из выполнений, где я могу увидеть, что метод завершен до того, как завершится тогда userRef.child (uid) .once ("value").Почему?или как исправить?Я полагаю, что мой код должен быть заблокирован и ждать его завершения, прежде чем он завершит триггер.Я что-то здесь упускаю?Пожалуйста, сообщите
2:25:44.698 AM
on_order_received_deduct_doodle_cash
something went wrong:TypeError: Cannot read property '_doodleCash' of null
2:25:44.698 AM
on_order_received_deduct_doodle_cash
user value:null
2:25:36.406 AM
on_order_received_deduct_doodle_cash
Function execution took 618 ms, finished with status: 'ok'
2:25:36.198 AM
on_order_received_deduct_doodle_cash
Function returned undefined, expected Promise or value
2:25:35.796 AM
on_order_received_deduct_doodle_cash
Customer uid is::3jwWMscY4mZGATQZg94d7wyRE143
2:25:35.796 AM
on_order_received_deduct_doodle_cash
payment type is DoodleCash so deduct it from customer account
2:25:35.796 AM
on_order_received_deduct_doodle_cash
payment type is::DoodleCash
2:25:35.788 AM
on_order_received_deduct_doodle_cash
Function execution started