Firebase函数 - NodeJS:异步数组处理

时间:2017-10-26 09:19:51

标签: node.js firebase firebase-realtime-database google-cloud-functions

我检查了很多帖子,但无法解决问题。 我想在继续之前返回数组。我尝试使用带回调的函数,但这也不起作用。

我的代码如下:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if let vc = segue.destination as? YourVCClass {
        vc.delegate = self
    }
}

我希望你能帮助我,谢谢!

1 个答案:

答案 0 :(得分:1)

您希望最后then()获取所有内部数据,每个内部数据都需要自己调用once()。在这种情况下,您希望使用Promise.all()等待所有once s。

exports.GetHelmets = functions.database.ref('onTrack/{userID}').onCreate(event => {
let userID = event.params.userID;

let friendRef = admin.database().ref("friends").child(userID);
friendRef.once("value").then(snapshot => {
    var promises = []l
    snapshot.forEach(function(snapshot2){
        let rider = snapshot2.val();
        let riderID = rider.id;

        let rhRef = admin.database().ref("User").child(riderID);
        promises.push(rhRef.once("value");
      });
    });
    return Promise.all(promises);
}).then(snapshots => {
    var helmets = [];

    snapshots.forEach((snapshot) => {
        let rider2 = snapshot.val();
        let helmetID = rider2.helmet;

        if (helmetID != "STANDARD"){
          if(helmets.indexOf(helmetID) < 0){
            helmets.push(helmetID);
          };
        };
    });
    // WORK WITH helmets
});