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

标签 javascript firebase firebase-realtime-database

所以我有一个从 Firebase 返回的对象,如下所示:

{key: {name: "test", email: "test", id: "test"}}

如何从该对象中获取 id?

如果我执行 returnItem 我得到了该对象,所以我尝试执行 returnItem[0] 但它不是一个数组,而且我尝试过 ( Object.keys(tempSnap) 但这只是给了我 key 而不是其中的对象。

这是我当前的代码:

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!"); 
}

这就是它的输出:

Returned Value

帮助会很棒:D

最佳答案

如果您已经知道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 tempSnap = child.val();
    console.log(tempSnap);
  });
});

关于javascript - 使用 JS 访问节点中的 Firebase 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49131993/

相关文章:

javascript - 如果 localStorage key 被删除,则将所有接下来的 key 移动 1 位

Javascript/jQuery : How to increment a number and highlight text when selected

javascript - 如何在 Ember 中没有 Controller 的情况下更改查询参数?

javascript - Firebase 云消息传递前台通知在 Vue 中不起作用

firebase - 聊天消息排序不正确

android - 如何通过一笔交易在 Firebase 上创建用户并上传数据

Javascript 改变文本颜色

angularjs - 必须为 Firebase 重新加载页面以识别身份验证

javascript - 如何在ionic上加载js文件

swift - 检索所有数据然后过滤到 TableView 中的正确方法是什么?