Javascript 使用此脚本向对象添加元素时,如何获取文档的键?

Javascript 使用此脚本向对象添加元素时,如何获取文档的键?,javascript,firebase,firebase-realtime-database,Javascript,Firebase,Firebase Realtime Database,这是我数据库的结构 root datizme site10 site22 site35 下面的脚本允许我获取在我的对象datizme中所做的所有修改,但我只想获取添加或删除的文档的密钥,或者在其中所做的修改。 我找不到一本我力所能及的教程 ( function() { // Your web app's Firebase configuration const config = { apiKey: "AIzaS

这是我数据库的结构

root
    datizme
       site10
       site22
       site35
下面的脚本允许我获取在我的对象datizme中所做的所有修改,但我只想获取添加或删除的文档的密钥,或者在其中所做的修改。 我找不到一本我力所能及的教程

    ( function() {
  // Your web app's Firebase configuration
  const config = {
    apiKey: "AIzaSsfxIeIaC1bruN12g",
    authDomain: "c-3d423.firebaseapp.com",
    databaseURL: "https://c-3d423.firebaseio.com",
    projectId: "c-3d423",
    storageBucket: "c-3d423.appspot.com",
    messagingSenderId: "745995",
    appId: "1:74591495:web:edec51656db3df2"

  };

// Initialize Firebase
  firebase.initializeApp(config);
  
  const preObject = document.getElementById("datizme");
  
  var dbRefObject = firebase.database().ref('datizme');
  
  dbRefObject.on('value', snap => {
     
      preObject.innerText = JSON.stringify(snap.val(), null, 3);
      
  });


}());

如果要检测更改了
datizme
的哪个子节点,可以使用
child\u changed
事件:

  dbRefObject.on('child_changed', snap => {     
      console.log(snap.key+" was changed, its new value is "+snap.val());      
  });

添加子项(
child\u added
)或删除子项(
child\u removed
)时也会发生类似的事件。

我修改了脚本并测试了“child\u added”我进入了一个站点,当我希望处于datizme级别时,我会看到一个更深的路径,并看到站点的名称(例如site48)
child
事件在子级触发。但这不正是你所要求的“我只想获取添加或删除的文档的密钥,或已进行修改的文档的密钥”?如何获取添加的站点的密钥?这就是
snap.key
,如我回答中的代码所示。非常感谢,我已经利用了一半的答案,我不知道我是否应该创建一个新的帖子。我的应用程序是“混合”的,一方面我使用FIREBASE API读取和写入数据,另一方面,当我将规则定义为“.read”:“auth.uid!=Null”,“.write”:“auth.uid!=Null”时,此脚本在webviewver中进行实时更新我可以继续读和写,但即使脚本作者建议在脚本中使用电子邮件和密码添加身份验证,更新也不会发生