Iva*_*hev 3 find firebase firebase-realtime-database
我有以下结构:
root
-LKMsdf2_Qxbwtv4238D
details
uid: john
-YKMWrmj_QxbwtvSBM5A
details
uid: tony
-R45Wrmj_Qxbf321BMd4
details
uid: karina
Run Code Online (Sandbox Code Playgroud)
如何通过其 uid 找到“root”下的 ref 键:
例如:通过 uid:karina 我需要获取参考密钥 -R45Wrmj_Qxbf321BMd4
有没有办法使用一些通配符,例如 /root/{recordid}/details/uid 之类的?
======== 感谢您的提示!====这是我的最终解决方案================
findEntry = function(targetUid) {
var entriesRef = db.ref('root');
return entriesRef.once('value')
.then((snapshot)=>{
var id = []; // found id
snapshot.forEach((childSnapshot)=>{
var childKey = childSnapshot.key;
var childData = childSnapshot.val();
var found = (childData.uid === targetUid);
if (found) {
console.log('Found for uid:' + targetUid + ': ' + childKey);
id = childKey;
}
return found; // true - breaks the forEach, false - continue
});
if (!id) {
console.log('Not Found for uid:' + targetUid);
}
return id;
});
Run Code Online (Sandbox Code Playgroud)
}
不,你能做的最好的就是子(键)搜索和相等(请参阅此处的示例https://firebase.google.com/docs/reference/js/firebase.database.Query#equalTo)
// Find all dinosaurs whose height is exactly 25 meters.
var ref = firebase.database().ref("dinosaurs");
ref.orderByChild("height").equalTo(25).on("child_added", function(snapshot) {
console.log(snapshot.key);
});
Run Code Online (Sandbox Code Playgroud)
没有比这更深入的查询方法了。
您可以使用其他结构进行反向查找、展平数据或以不同的方式解决它。
| 归档时间: |
|
| 查看次数: |
4879 次 |
| 最近记录: |