繁体   English   中英

Firebase 实时数据库 equalTo 查询递增键中的子项

[英]Firebase Realtime Database equalTo query for child in increasing keys

我正在尝试从数据库中获取数据。 但是在我更改了我的 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 文件推送到实时数据库,字符串数据的问题解决了,对于年 equalto 查询我应该首先将它解析为 int,在将年值解析为 integer 之后问题也解决了。

我想你在找

await database()
  .ref('news')
  .orderByChild('coin_name')
  .equalTo('algorand')

请注意,尽管这些数字、顺序键通常是 Firebase 中的反模式。要了解原因以及使用按键的更惯用的结构,请阅读Firebase 中的最佳实践:Arrays

一个工作示例: 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 用于新闻。 我会让你知道这种方法是否有效。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM