как я могу получить данные из firebase в порядке убывания

#reactjs #react-native

#reactjs #react-native

Вопрос:

// это мой accounts.js где я извлекаю учетные записи из пользовательского узла в пользовательском узле и перехожу к card.js компонент , в котором каждая учетная запись печатается в карточках с заголовком учетной записи и балансом учетной записи . но когда я делаю снимок учетных записей одного пользователя, они выбираются в порядке возрастания, но я хочу получать учетные записи из firebase в порядке убывания, как я могу это сделать. это моя структура базы данных в firebase

  import React, { useState, useEffect } from "react";
import { Fontisto } from "@expo/vector-icons";
import Firebase from "../components/Firebase";
import { StyleSheet, Text, View, TouchableOpacity } from "react-native";
import Cards from "../components/Accounts/Cards";
import AddAccountModal from "../components/Accounts/AddAccountModal";
import FundTransferModal from "../components/Accounts/FundTransferModal";

export default function AccountsScreen() {
  let add = {
    id: 111,
    title: "Add",
    backgroundColor: "#fff",
  };
  let [total, setTotal] = useState(0);
  let [accounts, setAccount] = useState([]);
  const [backgroundColor, setbackgroundColor] = useState("#ff7f50");
  const [addAccountmodal, SetAddAccountmodal] = useState(false);
  const [fundModal, setFundModal] = useState(false);

  const showAddmodal = () => {
    SetAddAccountmodal(true);
  };
  const closeAddmodal = () => {
    setbackgroundColor("#ff7f50");
    SetAddAccountmodal(false);
  };
  const showFundModal = () => {
    setFundModal(true);
  };
  const closeFundModal = () => {
    setFundModal(false);
  };
  useEffect(() => {
    let user = Firebase.auth().currentUser;
    let uid = user.uid;
    Firebase.database()
      .ref("users/"   uid)
      .child("accounts")
      .on("value", (snapshot) => {
        let tempAccounts = [];
        let temptotal = 0;
        snapshot.forEach(function (snapshotAccount) {
          let account = {
            id: snapshotAccount.key,
            title: snapshotAccount.val().title,
            balance: snapshotAccount.val().balance,
            backgroundColor: snapshotAccount.val().backgroundColor,
          };
          let balance = parseFloat(account.balance, 10);
          temptotal = temptotal   balance;
          tempAccounts.push(account);
        });

        tempAccounts.push(add);
        setTotal(temptotal);
        setAccount(tempAccounts);
      });
  }, []);

  return (
    <View style={styles.container}>
      <AddAccountModal
        addAccountmodal={addAccountmodal}
        closeAddmodal={closeAddmodal}
        backgroundColor={backgroundColor}
        setbackgroundColor={setbackgroundColor}
      />
      <FundTransferModal
        fundModal={fundModal}
        closeFundModal={closeFundModal}
      />

      <View style={styles.headingContent}>
        <Text style={styles.heading}>Accounts</Text>
        <View style={styles.balanceContent}>
          <Text style={styles.heading}>Total: </Text>
          <Text style={styles.balance}>  Rs.{total}</Text>
          <View style={styles.icon}>
            {/* <TouchableOpacity onPress={() => showFundModal()}>
              <Fontisto name="arrow-swap" size={25} color="#29416F" />
            </TouchableOpacity> */}
          </View>
        </View>
      </View>
      <Cards accounts={accounts} showAddmodal={showAddmodal} />
    </View>
  );
}
const styles = StyleSheet.create({
  container: {
    flex: 1,
    backgroundColor: "#fff",
  },
  headingContent: {
    marginTop: 10,
    paddingTop: 10,
    paddingHorizontal: 21,
    width: "100%",
    height: 50,
    flexDirection: "row",
    justifyContent: "space-between",
  },
  balanceContent: {
    flexDirection: "row",
  },
  heading: {
    color: "#333",
    fontWeight: "bold",
    fontSize: 16,
  },
  balance: {
    color: "green",
    fontWeight: "bold",
    fontSize: 16,
  },
  icon: {
    flexDirection: "row",
    justifyContent: "flex-end",
    marginLeft: "5%",
    justifyContent: "center",
  },
});
   
 

Ответ №1:

Мы можем использовать событие OrderBy для получения данных в порядке возрастания или убывания. Например: citiesRef.orderBy("name", "desc") , Ссылка: https://firebase.google.com/docs/firestore/query-data/order-limit-data