javascript - Firebase 数据库 : why do the key/ref in my queried datasnapshot refer to its parent?

标签 javascript firebase firebase-realtime-database

我想从实时数据库中删除通过查询查找的条目,但我得到了 ref 和 key 属性的意外结果。

ref('photos/users/USERID')
    .orderByChild('photoname')
    .equalTo('photoname i want to look up')
    .limitToFirst(1)
    .query('once')
    .then(snapshot => {
        // correct data at 'photos/users/USERID/PHOTOID'
        const entry = snapshot.val(); 

        // seems to be the ref to photos/users/USERID'
        const ref = snapshot.ref; 

        // seems to be USERID
        const key = snapshot.key
    })

为什么这些不是我刚刚找到的条目的引用/ key ?删除此条目的最佳方法是什么?

最佳答案

当您对 Firebase 数据库执行查询时,可能会出现多个结果。因此快照包含这些结果的列表。即使只有一个结果,快照也会包含一个结果的列表。

您的代码需要考虑此列表,并迭代 snapshot.forEach() 以获取实际的匹配项:

ref('photos/users/USERID')
    .orderByChild('photoname')
    .equalTo('photoname i want to look up')
    .limitToFirst(1)
    .query('once')
    .then(snapshot => {
      snapshot.forEach(child => {
        const entry = child.val();     
        const ref = child.ref;     
        const key = child.key
      });
    })

关于javascript - Firebase 数据库 : why do the key/ref in my queried datasnapshot refer to its parent?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47273421/

相关文章:

javascript - jQuery - 如何检查是否在特定 DIV 中单击了任何链接?

ios - Facebook 登录 UIView 加载异常,而 UI 行为符合预期

javascript - 使用 three.js 单击网格获取像素的颜色值

php - 在 mySQL 数据库中存储时间范围并与当前时间进行比较

javascript - 谷歌图表列着色?

javascript - 关闭 firebase 监听器的正确方法?

ios - Firebase 交易 - 这是正确的吗?

java - 使用 Firestore 管理 Android 后台堆栈和监听器以优化文档读取

swift - Firebase 不会将我的值发送到我的变量中

java - 如何使用 FirebaseRecyclerAdapter