【问题标题】:How to call the $firebaseArray in the cloud function of firebase如何在firebase的云函数中调用$firebaseArray
【发布时间】:2018-03-13 21:32:07
【问题描述】:

因此,在我的 Angular JS Web 应用程序中,我有一个函数调用 firebase 数据库中名为 orderedPlayers 的节点并将其作为数组返回,如下所示:

$firebaseArray(orderedPlayers)
        .$loaded(function(loadedPlayers) {
  // function in here
        });

尝试在云功能中执行类似操作时,我遇到了问题。有没有办法将players 节点作为数组返回?

我知道我可以按如下方式访问数据库:

admin.database().ref('orderedPlayers');

但是$firebaseArray 不起作用。

【问题讨论】:

    标签: angularjs firebase firebase-realtime-database web-applications google-cloud-functions


    【解决方案1】:

    这些文档可以提供帮助:https://firebase.google.com/docs/database/admin/retrieve-data

    snapshot.val() 将返回一个可以作为键值数组引用的对象。在你的情况下:

    admin.database().ref('orderedPlayers').on("value", function(snapshot) {
      var loadedPlayers = snapshot.val();
      //access your players here
    }, function (errorObject) {
      console.log("The read failed: " + errorObject.code);
    });
    

    【讨论】:

      【解决方案2】:

      据我所知,cloudfunctions 不包括firebaseArray。您可以改为将播放器 children 放入一个数组中。

      所以:

      let yourArray = [];
      admin.database().ref('orderedPlayers').once('value').then(snap => {
          snap.forEach(childSnap => {
              yourArray.push(childSnap));
          });
      });
      

      或者你可以使用孩子:

      let yourArray = [];
      admin.database().ref('orderedPlayers').on('child_added',snap => {
          yourArray.push(snap);
      });
      

      *on('child_added') 将始终至少调用一次,因此无需循环遍历子级。

      如果您想通过特定值查询数据库,您只需在 ref 之后和调用 onceon 之前添加类似 orderByChild('order') 的内容

      【讨论】:

      • 我想你可以使用myArray = snap.val()然后将快照返回的所有数据作为数组访问
      猜你喜欢
      • 2021-12-13
      • 2019-01-18
      • 2021-02-10
      • 2021-09-13
      • 2020-01-28
      • 2020-11-24
      • 2018-05-17
      • 2017-08-04
      • 2019-07-29
      相关资源
      最近更新 更多