如何运行多个firebase promises,然后完成后执行功能

use*_*254 1 node.js promise firebase firebase-realtime-database

我需要执行2 firebase calls以从数据库中检索特定数据。Once these promises resolve,我想用检索到的数据调用另一个函数。我怎样才能做到这一点?..东西Promise.All?

代码如下:

app.post('/testtwilio', function(req, res) {
  //save request variables
  var to_UID = req.body.to;
  var from_UID = req.body.from;
  var experience_id = req.body.exp_id;

  //Query firebase and save 'zone_id' which we need later
  firebase.database().ref('experiences').child(experience_id).once('value').then((snap) => {
    zone_id = snap.val().ZoneID;
  });

  //Query firebase and save 'from_name' which we need later
  firebase.database().ref('users').child(from_UID).once('value').then((snap) => {
    from_name = snap.val().Name;
  });

  //Once we have the two variables returned and saved
  //Call a final firebase query and a twilio function with all the recieved data
  firebase.database().ref('users').child(to_UID).once('value').then((snap) => {
    //Do something with this aggregated data now
    client.messages.create({
      //blah blah do something with the saved data that we retrieved
      var phone = snap.val().Phone;
      var msg = from_name + zone_id + from_UID + experience_id
    });
  });
});
Run Code Online (Sandbox Code Playgroud)

Fre*_*ede 5

是的,Promise.all因为once('value')返回一个,您可以使用。

快速n脏示例:

var promises = [];
promises.push(firebase.database().ref('experiences').child(experience_id).once('value'));
promises.push(firebase.database().ref('users').child(from_UID).once('value'));

// Wait for all promises to resolve
Promise.all(promises).then(function(res) {        
    // res[0] is your experience_id snapshot
    // res[1] is your from_UID snapshot
    // Do something...
});
Run Code Online (Sandbox Code Playgroud)