【发布时间】:2021-08-03 19:46:18
【问题描述】:
我正在尝试使用 Firebase 设置一个数据库,该数据库也有一个用户名字段。我正在使用来自 Google (https://cloud.google.com/identity-platform/docs/reference/rest/v1/accounts/signInWithPassword) 的身份工具包进行注册和登录操作。但据我所知,我无法在注册数据库中存储用户名,因为我无法更改表格和内容。这就是我创建自己的 Firebase 数据库的原因(见图,该数据库中的数据是通过 POST 请求存储的)。我要做的是通过 GET 请求获取用户名。
我可以建立与我自己的 Firebase 数据库的连接并获得正常响应。我正在使用以下代码执行此操作:
const responseUser = await fetch(
`https://[firebase-link].firebasedatabase.app/users/${userId}.json`,
{
method: "GET",
}
);
当我记录它时得到响应,状态为 200(这似乎是正确的连接),这很有效。在console.log中,我也可以清楚地看到我在请求中使用的对应的userId,它与数据库中的userId匹配。据我所知,我实际上在数据库中找到了正确的用户,但是没有地方可以找到用户名。第二个屏幕截图是我得到的响应。我尝试在响应中打开几乎所有选项,但我找不到数据库中的名称。
我知道我遗漏了一些可能非常简单的东西,但我似乎无法弄清楚。你们能帮帮我吗?
编辑: 我试图找到另一种方法来做到这一点,我正在返回所有用户的列表(无论如何不会那么多),然后我使用 for 循环遍历每个条目。见以下代码:
const responseUser = await fetch(
`https://[firebase-link].firebasedatabase.app/users.json`,
{
method: "GET",
}
);
// console.log(responseUser);
const responseUserData = await responseUser.json();
// console.log("ResponseUserData ===");
// console.log(responseUserData);
for (let userData in responseUserData) {
let userId = responseData.localId;
console.log("== userId");
console.log(userId); // returns the user ID I need to filter the userData on
console.log("== full user item");
console.log(userData); // returns the user item, which contains userId and userName
console.log("---------------------------------");
// How do I filter to get the userName of userItem with corresponding userId?
}
现在我需要做的就是过滤 userItem,就像我在代码的最后注释中所说的那样。怎么样?
我尝试过以下方式过滤:
const user = responseUserData.filter(user => user.userId === userId)
console.log(user);
但这给了我一个错误Uncaught (in promise) TypeError: responseUserData.filter is not a function
【问题讨论】:
标签: javascript firebase vue.js firebase-realtime-database get