【问题标题】:Cloud Functions for Firebase - How to check whether a child exists?Cloud Functions for Firebase - 如何检查孩子是否存在?
【发布时间】:2025-11-28 03:25:01
【问题描述】:

我在 Firebase 上有这样的数据库结构:

- members
    |- -kSjJSDFjl2DFc
          |- nationality: Australian

- statistics-nationality
    |- American : 2

当“nationality-stats”更新时,“members”会被监控 onWrite。

我有这段代码来获取新成员的当前国籍值,然后导航到统计国籍,但我想知道是否存在特定国籍节点以选择设置或更新操作:

const currentNationality = event.data.current.child("nationality").val();
const statisticsNationality = event.data.ref.parent.parent.child('statistics-nationality');
let statisticsNationalityChild = statisticsNationality.child(currentNationality);

if (statisticsNationalityChild.exists()) { // No such an exists() method
   // update
} else {
   // create new nationality
}

但是,这一行没有exists() 方法:

statisticsNationalityChild.exists()

请告知如何检查孩子是否存在?谢谢!

【问题讨论】:

    标签: javascript firebase firebase-realtime-database google-cloud-functions


    【解决方案1】:

    如果我正确地看到了您的数据结构,那么statistics-nationality 不是触发该函数的事件数据的一部分。在这种情况下,您需要尝试读取数据以确定它是否存在:

    const currentNationality = event.data.current.child("nationality").val();
    const statisticsNationality = event.data.ref.parent.parent.child('statistics-nationality');
    let statisticsNationalityChild = statisticsNationality.child(currentNationality);
    
    statisticsNationalityChild.once("value").then((snapshot) => {
      if (snapshot.exists()) { 
        // update
      } else {
        // create new nationality
      }
    }
    

    【讨论】:

    • 是的,它不是事件数据的一部分。感谢您的建议!