当某个键是特定值时运行firebase云端function
const functions = require('firebase-functions'); var IAPVerifier = require('iap_verifier'); const admin = require('firebase-admin'); admin.initializeApp(functions.config().firebase); exports.verifyReceipt = functions.database.ref('/Customers/{uid}/updateReceipt') .onWrite(event => { const uid = event.params.uid; var receipt = event.data.val(); (strReceipt).toString('base64'); var client = new IAPVerifier('IAP_secretkey') client.verifyAutoRenewReceipt(receipt, true,function(valid, msg, data){ console.log(' RECEIPT'); if(valid) { console.log('VALID RECEIPT'); console.log('msg:' + msg); var strData = JSON.stringify(data); console.log('data"' + strData); const newReceiptRef = admin.database().ref('/Customers/{uid}/'); newReceiptRef.update({'receiptData1': data}); const recVerRef = admin.database().ref('/Customers/{uid}/'); newReceiptRef.update({'updateReceipt': 0}); // update status of payment in your system }else{ console.log('INVALID RECEIPT'); console.log('msg:' + msg); var strData = JSON.stringify(data); console.log('data"' + strData); } }); });
这是我的节点js云function。 “updateReceipt”的可能值是0和1.只有当值为1时才能运行云端函数吗?
谢谢。
当存在特定值时,无法仅触发该function。
我可以想到两个select:
- 根据
updateReceipt
值将节点写入不同的分支。 - 添加一个
if
你的代码。
第二个选项绝对是最简单的:
exports.verifyReceipt = functions.database.ref('/Customers/{uid}/updateReceipt') .onWrite(event => { const uid = event.params.uid; var receipt = event.data.val(); if (receipt.updateReceipt === 0) { var client = new IAPVerifier('IAP_secretkey') ...
或者,您可以将更新后的收据保留在与新收据不同的分支中。 这样,您可以单独为新收据触发一个function。