当某个键是特定值时运行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:

  1. 根据updateReceipt值将节点写入不同的分支。
  2. 添加一个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。