Как вы можете получить несколько значений из базы данных Firebase в облачных функциях? - PullRequest
0 голосов
/ 11 октября 2018

У меня есть следующая функция, которую я сделал в 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

База данных Struct

1014 *Database Struct

Ответы [ 2 ]

0 голосов
/ 11 октября 2018

Исходя из того, что я прочитал, и пользователь сказал мне, я смог решить мою проблему с помощью следующего кода, который работает идеально, как я хотел.

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);
     });
});
0 голосов
/ 11 октября 2018

Если вы возьмете этот фрагмент кода 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 и веб-документацию рядом.Они оба имеют одинаковую структуру, поэтому, когда вы знаете, как что-то делать в Android, вы можете легко сопоставить это с JavaScript.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...