1
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雲端函數。 'updateReceipt'的可能值是0和1.只有當值爲1時,纔有可能運行雲功能?當某個鍵值爲特定值時運行firebase雲端函數

謝謝。

回答

1

當存在特定值時,無法僅觸發該功能。

我能想到的兩個選項:

  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') 
     ... 

或者,您可以從新的收入保持最新的收據在一個單獨的分支。這樣,您可以單獨爲新收據觸發功能。

相關問題