Javascript 使用JS访问节点中的Firebase数据

Javascript 使用JS访问节点中的Firebase数据,javascript,firebase,firebase-realtime-database,Javascript,Firebase,Firebase Realtime Database,因此,我从Firebase返回了一个对象,如下所示: {key:{name:“test”,email:“test”,id:“test”} 如何从该对象中获取id 如果我做了returnItem我得到了那个对象,所以我试着做returnItem[0],但它不是数组,我试过(object.keys(tempSnap),但那只是给了我键,而不是里面的对象 这是我当前的代码: export function sendInvitation(email) { firebaseRef.database

因此,我从Firebase返回了一个对象,如下所示:

{key:{name:“test”,email:“test”,id:“test”}

如何从该对象中获取id

如果我做了
returnItem
我得到了那个对象,所以我试着做
returnItem[0]
,但它不是数组,我试过
(object.keys(tempSnap)
,但那只是给了我键,而不是里面的对象

这是我当前的代码:

export function sendInvitation(email) {
    firebaseRef.database().ref().child('users').orderByChild('email').equalTo(email).on("value", function(snapshot) {
        let tempSnap = snapshot.val();
        if(tempSnap != null) {
            console.log(tempSnap);
        }
    });
    return dispatch => firebaseRef.database().ref(`${userID}/invites`).push("This is a test Message!"); 
}
这就是它的输出:


帮助会很棒:D

如果您已经知道
id
并且它是一个文本,那么这就是
returnItem.id
的问题


如果您已经知道
id
并且它是一个变量,那么它就是
returnItem[id]

如果您不知道这些键,并希望打印所有键及其值,则:

Object.keys(returnItem).forEach(function(key) {
  console.log(key, returnItem[key]);
});
更新

您的新代码显示了问题所在。当您对Firebase数据库执行查询时,可能会有多个结果。因此快照包含这些结果的列表。即使只有一个结果,快照也会包含一个结果的列表。您的回调需要处理这样一个事实,即它通过在他使用snapshot.forEach()生成了以下结果:


如果您已经知道
id
并且它是一个文本,那么这就是
returnItem.id
的问题


如果您已经知道
id
并且它是一个变量,那么它就是
returnItem[id]

如果您不知道这些键,并希望打印所有键及其值,则:

Object.keys(returnItem).forEach(function(key) {
  console.log(key, returnItem[key]);
});
更新

您的新代码显示了问题所在。当您对Firebase数据库执行查询时,可能会有多个结果。因此快照包含这些结果的列表。即使只有一个结果,快照也会包含一个结果的列表。您的回调需要处理这样一个事实,即它通过在他使用snapshot.forEach()生成了以下结果:

试试这个:

firebaseRef.database().ref().child('users').orderByChild('email').equalTo(email).on("value", function(snapshot) {
snapshot.forEach(function(child) {
    let keys=child.key;
    let ids=child.val().id;
      )};
   )};
你有:

 users
  keyid
   email:email
   name:yourname
   id: test
试试这个:

firebaseRef.database().ref().child('users').orderByChild('email').equalTo(email).on("value", function(snapshot) {
snapshot.forEach(function(child) {
    let keys=child.key;
    let ids=child.val().id;
      )};
   )};
你有:

 users
  keyid
   email:email
   name:yourname
   id: test

所以密钥是自动生成的,我不知道。我尝试了您建议的方法,但似乎不起作用。returnedItem[id]抛出一个错误,表示它不知道id是什么(我正在尝试获取它的值,所以我不知道)这个错误听起来好像id`不是一个文字。因为你不知道它的值,你可能不得不像我上次给出的代码片段那样循环。但是,你在问题中给出的有限信息很难更好地帮助你。要获得更好的帮助,请确保你发布了你正在收听的JSON(作为文本,没有屏幕截图),从代码中附加侦听器的方式,以及侦听器中的实际代码。所有这些都可能会影响获取值所需的操作。我用更多信息更新了问题,也许这会有助于解决它!这正是我需要的,谢谢。那么我到底在看什么?抱歉,我正在尝试学习,所以关键是自动生成ted和我都不知道。我尝试了你的建议,但似乎不起作用。returnedItem[id]抛出一个错误,表示它不知道id是什么(我正在尝试获取它的值,所以我不知道)这个错误听起来好像id`不是一个文字。因为你不知道它的值,你可能不得不像我上次给出的代码片段那样循环。但是,你在问题中给出的有限信息很难更好地帮助你。要获得更好的帮助,请确保你发布了你正在收听的JSON(作为文本,没有屏幕截图),从代码中附加侦听器的方式,以及侦听器中的实际代码。所有这些都可能会影响您获取值所需的操作。我用更多信息更新了问题,也许这会有助于解决问题!这正是我需要的,谢谢。那么,我到底在看什么?抱歉,我正在尝试了解您的问题包括相关代码。希望这有助于澄清问题请您的问题包括相关代码。希望这有助于澄清仅返回对象密钥的问题。我需要立即返回对象密钥的itcheck@EladKarniSo内的id。我需要立即返回对象密钥的itcheck@EladKarni内的id