#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