firebase 9 查询实时数据库的关键

Posted

技术标签:

【中文标题】firebase 9 查询实时数据库的关键【英文标题】:firebase 9 query realtime database for key 【发布时间】:2022-01-05 23:48:16 【问题描述】:

我想使用 firebase 9 查询实时数据库,我之前使用过 admin sdk,我有这个可以工作的示例,但是我在调​​整到版本 9 时遇到了问题。我找不到任何关于如何使用这些模块化方法进行查询的可靠示例.任何示例将不胜感激。

版本 8

return admin
    .database()
    .ref("Countries")
    .orderByChild("name")
    .equalTo(query)
    .once("value")
    .then((data) => 
      if (data.exists()) 
        const obj = Object.keys(data.val())[0];
        const country = data.val()[obj];

        return country;
       else 
        return null;
      
    )
    .catch((error) => 
      console.log("error finding country name", error);
      return null;
    );

我尝试过的

const  getDatabase, child, get, ref ,orderByChild,equalTo = require("firebase/database");

    const toFind = "USA"

    const dbRef = ref(getDatabase());
    const query = await get(child(dbRef, `countries`));
    //orderByChild

    //equalTo

更新的解决方案:

 const dbRef = ref(db, "/countries");

    const queryConstraints = [orderByChild("name"), equalTo(name)];

    const country = await get(query(dbRef, ...queryConstraints));

    if (country.exists()) 
      console.log("found by name", country.val());
     else 
      console.log("No data available");
      return null;
    
   catch (error) 
    console.log("====================================");
    console.log("error getting country", error);
    console.log("====================================");
  

【问题讨论】:

【参考方案1】:

您可以继续在 query() 中添加这些 QueryConstraints:

const db = getDatabase();
const dbRef = ref(db, "/Countries")

const queryConstraints = [orderByChild("name"), equalTo('value')]

const dataSnapshot = await get(query(dbRef, ...queryConstraints))

也结帐:

How to read, write and query data in Firebase Realtime Database using Firebase SDK v9 (Modular) Working with lists on web

【讨论】:

我得到 TypeError: db._checkNotDeleted is not a function 。我不需要在 getDatabase() 的某个地方传递吗? @obumoon 是的,更新了答案。感谢收看。

以上是关于firebase 9 查询实时数据库的关键的主要内容,如果未能解决你的问题,请参考以下文章

Firebase 实时数据库在查询之间按单词搜索?

Flutter:Firebase 实时数据库 orderByChild 对查询结果没有影响

Firebase实时数据库数组查询问题[重复]

如何查询和过滤 Firebase 实时数据库 [重复]

查询和改变firebase实时数据库多对多(双向)关系

AWS Lambda 中的 Firebase 实时数据库查询未获得最新结果