【问题标题】:How can you retrieve multiple values from Firebase database in cloud functions?如何在云函数中从 Firebase 数据库中检索多个值?
【发布时间】:2018-10-11 12:42:55
【问题描述】:

我有以下在 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

数据库结构

【问题讨论】:

  • 可以添加数据库结构吗(截图)? As 无法从您的 java 代码中解决您需要的问题。
  • 当然,请查看我的帖子更新。谢谢!
  • 我已经找到了解决方案。 :D

标签: javascript java firebase google-cloud-firestore


【解决方案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。

【讨论】:

  • 这对我帮助很大,它几乎可以工作,但我必须进行一些修改才能工作。但我离开这里,谢谢!
【解决方案2】:

根据我阅读的内容和用户告诉我的内容,我能够使用以下代码解决我的问题,这完全符合我的要求。

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);
     });
});

【讨论】:

    猜你喜欢
    • 2018-12-04
    • 2017-04-13
    • 2018-11-20
    • 2018-02-01
    • 1970-01-01
    • 2016-11-27
    • 1970-01-01
    • 2022-01-08
    • 1970-01-01
    相关资源
    最近更新 更多