gpt4 book ai didi

javascript - 从 Firebase 从用户名获取 UID

转载 作者:行者123 更新时间:2023-11-30 19:56:00 25 4
gpt4 key购买 nike

我正在尝试从 Firebase 创建各种好友列表,但无法弄清楚哪里出错了。我有这个功能来根据用户名输入获取用户:

handleAddMember = () => {
var username = prompt("Enter the person's username and press submit");
if (username != null) {
this.findUsersMatchingUsername(username);
}
}

findUsersMatchingUsername( username ) {
let userRef = fire.database().ref('users');
userRef.orderByChild('username').equalTo(username).once('value', snap => {
if(snap.val()){
console.log(snap.val());
}else{
alert(username + ' exists?: false');
}
});
}

它按预期工作,当数据库中有用户名时返回它 (snap.val()) : enter image description here

这是数据结构: enter image description here

为什么当我尝试 console.log(snap.val().id) 时它只是返回未定义? ID 就在快照中。 snap.key 也返回“用户”,所以我猜我需要进一步深入数据库,但如果下一级只是一堆 uid 而我似乎无法获得 uid,我该怎么做?

最佳答案

由于您正在执行查询,所以您总是会得到一组结果,即使它只是一个结果。如果您只打算引入一个用户,那么我建议您将用户名作为引用的一部分:

findUsersMatchingUsername( username ) {
fire.database().ref(`users/${username}`).once('value', snap => {
if(snap.val()){
console.log(snap.val());
}else{
alert(username + ' exists?: false');
}
});
}

另一方面,如果你打算让多个用户回来,然后访问每个人的属性,那么你需要更深入一层,就像你怀疑的那样......为此我会遍历他们,一些东西喜欢:

findUsersMatchingUsername( username ) {
let userRef = fire.database().ref('users');
userRef.orderByChild('username').equalTo(username).once('value', snap => {
let results = snap.val() ? snap.val() : {};
if (results == {})
{
alert(username + ' exists?: false');
return;
}
Object.keys(results).forEach( eachKey => {
console.log(results[eachKey]); // Print the whole object in question
console.log(results[eachKey]['id']); // Print just the ID of the current object
// EDIT: Since it's double-nested, you *might* have to do something like:
// console.log(results[eachKey][eachKey]['id']); // Print just the ID of the current object
});
});
}

关于javascript - 从 Firebase 从用户名获取 UID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53990383/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com