如何在Cloud函数中从Firebase数据库检索多个值?

时间:2018-10-11 12:42:55

标签: javascript java firebase google-cloud-firestore

我有以下在Java中执行的功能,它可以解决我的问题,但是我也想使用javascript。因此,我遇到了以下问题:我只找到了检索唯一值的函数,并且我想要一个类似于dataSnapshot.getChildren()的函数,该函数在Java中只有JavaScript才有,否则,有什么替代方法?

为了更好地理解,我将在此处保留运行良好的Java代码。

mRef.addListenerForSingleValueEvent(new ValueEventListener() {
                    @Override
                    public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                        for (DataSnapshot ds : dataSnapshot.getChildren()) {
                            float okk = Float.valueOf(ds.child("value").getValue(String.class))/100000000;
                            prov += ds.child("wallet").getValue(String.class)+", "+String.format(Locale.US,"%.8f", okk)+"\n";
                            ds.getRef().removeValue();
                        }
                        tx_array.setText(prov);
                    }
                    @Override
                    public void onCancelled(@NonNull DatabaseError databaseError) {

                    }
                });

输出必须看起来像这样,与Java相同。

  

39Hs93m61zYCaiaNe8yzgrDcutVAz2Kgdc,0.00151515   3QMTHAaYcQB8kJxF5nxxBwskyCFukCNH8t,0.00151515   3AcNSeB9DX3ZKvGxMaec9uZ98rY2BJKuzW,0.00153787   36SjF1MBm2DE6YimNYiy9T4ez6Z7UA4rpg,0.001540903   AHr3GF12div1Kgf6DegeiHSGQYssvbmih,0.00162121   19vR7xchAg1vUgGwATwBsz5NYrVWYKdSQ3,0.00164545   3KmfDgW9RdWp7P2ns3tydXsiChR5U9XKdT,0.00165757   1C8rxppQk8mRSWB8xPKZ5DsYVykJBLNhV3,0.00166212

数据库结构

Database Struct

2 个答案:

答案 0 :(得分:1)

如果您使用这段Java代码:

mRef.addListenerForSingleValueEvent(new ValueEventListener() {
    @Override
    public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
        for (DataSnapshot ds : dataSnapshot.getChildren()) {
            float okk = Float.valueOf(ds.child("value").getValue(String.class))/100000000;
            prov += ds.child("wallet").getValue(String.class)+", "+String.format(Locale.US,"%.8f", okk)+"\n";
            ds.getRef().removeValue();

JavaScript中的等效项是:

ref.once("value").then(function(snapshot) {
    snapshot.forEach(function(ds) {
        var okk = ds.child("value").val() / 100000000;
        prov += ds.child("wallet").val()+ ", "...
        ds.ref.remove();
    });
});

如果您经常遇到此类问题,强烈建议您并排阅读Android documentationWeb documentation。它们都遵循完全相同的结构,因此一旦您知道如何在Android中执行操作,就可以轻松将其映射到JavaScript。

答案 1 :(得分:0)

根据我阅读的内容以及用户告诉我的内容,我可以使用下面的代码来解决我的问题,该代码可以按我的意愿很好地工作。

exports.showEvent = functions.https.onRequest((req, res) => {
    let prov = "";
    return admin.database().ref('requests').once('value', (snapshot) => {
      snapshot.forEach(function(ds) {
          var okk = ds.child("value").val() / 100000000;
          prov += ds.child("wallet").val()+ ", " + parseFloat(okk).toFixed(8) + "\n";
        ds.ref.remove();
      });
        res.send(prov);
     });
});