0

我有這樣的火力地堡數據庫結構:Firebase雲端函數 - 如何檢查小孩是否存在?

- members 
    |- -kSjJSDFjl2DFc 
      |- nationality: Australian 

- statistics-nationality 
    |- American : 2 

和「成員」正在爲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() 

請告知如何檢查孩子是否存在?謝謝!

回答

2

如果我看到您的數據結構正確,那麼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 
    } 
} 
+0

是的,它不是事件數據的一部分。感謝您的建議! –