我试图从数据库中获取数据。但我把代码改成我的react-native项目的性能问题,我找不到我想要的查询。问题是我有这种类型的数据结构。它在/root/news/0/coin_name下0键是像1、2、3…每个数据取N。为了更好地理解:
cnh
I
I
--coins
|
|
--news|
|
|--0|
--coin_name='algorand'
...
|--1|
...
我想获取的数据,其中coin_name等于如'algorand'。我尝试了一些查询,但没有一个成功。如果你能帮助我,我会很感激的。
我试着:
useEffect(()=>{
const fbdb = async () =>{
await database()
.ref(newsKey)
.orderByChild('year')
.equalTo('2021')
.once('value')
.then(snapshot => {
const data = snapshot.val();
const formattedResponse=formatMarketData(data,show);
return setNews(formattedResponse)
});
};
fbdb();
},[show,year]);
编辑最后,我将数据从excel文件推送到实时数据库,字符串数据的问题解决了,对于年等价查询,我应该先将其解析为int,在将年值解析为整数后,问题也解决了。
我想你在找
await database()
.ref('news')
.orderByChild('coin_name')
.equalTo('algorand')
请注意,这些数字顺序键通常是Firebase中的反模式。要了解原因,以及更习惯的push键结构,请阅读最佳实践:Firebase中的数组。
一个工作示例:https://jsbin.com/focaveq/3/edit?js,console
{
"coins" : [ {
} ],
"news" : [ {
"coin_name" : "algorand",
"event_date" : "2019-06-24",
"exchange" : "crypto.com",
"month" : "6",
"year" : "2019"
}, {
"coin_name" : "algorand",
"event_date" : "2021-01-06",
"exchange" : "bitmart",
"month" : "1",
"year" : "2021"
}, {
"coin_name" : "litecoin",
"event_date" : "2020-12-25",
"exchange" : "binance qtly",
"month" : "12",
"year" : "2020"
}, {
"coin_name" : "litecoin",
"event_date" : "2021-01-04",
"exchange" : "coinflex",
"month" : "1",
"year" : "2021"
},
{
"coin_name" : "tron",
"event_date" : "2020-06-20",
"exchange" : "resfinex",
"month" : "6",
"year" : "2020"
}, {
"coin_name" : "tron",
"event_date" : "2020-07-07",
"exchange" : "all",
"month" : "7",
"year" : "2020"
}, {
"coin_name" : "tron",
"event_date" : "2020-07-10",
"exchange" : "phemex",
"month" : "7",
"year" : "2020"
}, {
"coin_name" : "tron",
"event_date" : "2021-04-21",
"exchange" : "all",
"month" : "4",
"year" : "2021"
}, {
"coin_name" : "tron",
"event_date" : "2021-05-19",
"exchange" : "phemex",
"month" : "5",
"year" : "2021"
}, {
"coin_name" : "tron",
"event_date" : "2021-06-17",
"exchange" : "bitpanda",
"month" : "6",
"year" : "2021"
} ]
}
这是数据集
的实例经过我对web的所有研究,我得出的结论是,firebase实时数据库api不支持嵌套查询与未知路径。我应该在获取所有数据后使用另一种结构或过滤数据(这对于大型数据集来说是非常低效的)。所以我决定尝试使用firestore的新闻,只没有新闻标签。如果那样行得通,我会告诉你的。