我想从实时数据库中删除我通过查询查找的条目,但是我得到了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
})
为什么这些我刚刚找到的条目的参考/密钥不是?删除此条目的最佳方法是什么?
答案 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')?