Firebase数据库:为什么我查询的数据快照中的key / ref引用其父级?

时间:2017-11-13 20:57:58

标签: 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
    })

为什么这些我刚刚找到的条目的参考/密钥不是?删除此条目的最佳方法是什么?

2 个答案:

答案 0 :(得分:3)

对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
      });
    })

答案 1 :(得分:0)

您的参考和密钥基于ref('photos / users / USERID'),而不是您创建的过滤子集。你有什么理由不打电话给ref('photos / users / USERID / PHOTOID')?