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中进行实时更新我可以继续读和写,但即使脚本作者建议在脚本中使用电子邮件和密码添加身份验证,更新也不会发生