javascript - Hur man skickar en variabel från utsidan av funktionen till ett Firebase-evenemang


Nedan är min kod som körs på en nodeJS-server, jag försöker skicka ett SMS-meddelande så snart 'child_added'-händelsen utlöses

// Twilio Credentials
var accountSid = '<AccountSid>';
var authToken = '<authToken>';


var twilio = require("twilio");
var client = new twilio.RestClient(accountSid, authToken);

// TWILIO Function
client.messages.create({
    to: "+12432056980", // This need to be obtained from firebase
    from: "+14352058756",
    body: "Hey There! Good luck on the bar exam!"
}, function(err, message) {
    console.log(message.sid);
});

Nedan är händelsen som triggas så snart ett barn läggs till i Firebase-databasen. Jag skulle vilja anropa TWILIO-funktionen (visad ovan) så snart som nedanstående händelse triggas och även skicka mobilnummervariabeln från nedanstående funktion.

ref.limitToFirst(1).on('child_added', function(snapshot) { // This function triggers the event when a new child is added
  var userDetails = snapshot.val();
  var mobileNumber = userDetails.mobileNumber;

  //*** I would like to call the TWILIO CODE  at this point and pass it the 'mobileNumber' parameter

});

Svar #1

Om de två operationerna är inom samma fil kan du bara kapsla in Twilio-anropet i en funktion och anropa det från inom Firebase-operationen på följande sätt...

function sendSMS(dest, msg) {
    client.messages.create({
        to: dest,
        from: "+14352058756",
        body: msg
    }, function(err, message) {
        console.log(message.sid);
    });
}

ref.limitToFirst(1).on('child_added', function(snapshot) {
  var userDetails = snapshot.val();
  var mobileNumber = userDetails.mobileNumber;

  sendSMS(mobileNumber, "Hey There! Good luck on the bar exam!");
});

Om Twilio-operationen finns i en annan fil kan du exportera den och kräva den där du använder Firebase

//twiliofile.js
module.exports.sendSMS = function(dest, msg) {
    client.messages.create({
        to: dest,
        from: "+14352058756",
        body: msg
    }, function(err, message) {
        console.log(message.sid);
    });
}

-

//firebasefile.js
var sms = require('./twiliofile.js');

ref.limitToFirst(1).on('child_added', function(snapshot) {
  var userDetails = snapshot.val();
  var mobileNumber = userDetails.mobileNumber;

  sms.sendSMS(mobileNumber, "Hey There! Good luck on the bar exam!");
});