javascript - 如何在不检索密钥的情况下检索 Firebase 子数据?
问题描述
我目前正在尝试在没有数组键的情况下获取子数据,以便可以将其添加到我的 redux 状态。
ref.orderByChild(`userId`).equalTo(googleUserInfo[0].userId).once('value', streamSnapshot => {
if (streamSnapshot.exists()) {
googleUserInfo[0] = (streamSnapshot.val())
}
目前这返回
[{…}]0: {-LbJneodI2SaUglB6fwx: {…}}length: 1__proto__: Array(0)
但我想要这个
[{…}]
0:
{
displayName: "Seth Jones"
userAvi: "https://lh6.googleusercontent.com/-RABcz3kK1ew/AAAAAAAAAAI/AAAAAAAAAAA/ACHi3rfzHCLV9A7LfiGWKtTOuq5rJmtQpg/s96-c/photo.jpg"
userEmail: "xxxx@gmail.com"
userFirstName: "Seth"
userId: "103977654052015523435"
userLastName: "Jones"
}
解决方案
当您对 Firebase 数据库执行查询时,可能会有多个结果。所以快照包含这些结果的列表。即使只有一个结果,快照也会包含一个结果的列表。
您需要遍历结果,以获取各个值:
ref.orderByChild('userId').equalTo(googleUserInfo[0].userId).once('value', streamSnapshot => {
streamSnapshot.forEach((child) => {
googleUserInfo[0] = (child.val())
});
推荐阅读
- ios - 如何调试网页(例如:google.com),在 IOS 的 chrome 浏览器上运行
- react-native - 使用 react-native-gesture-handler 将触摸事件传递给子视图
- angular - 用于数据共享的 Angular 5 服务
- php - 图像未在 cpanel 中删除
- python - 如何从函数的结果中删除 None?
- html - 位置绝对重叠的两个 div
- docker - 如何在 docker 容器部署中添加 Jenkins 插件?
- c# - 为什么当我不使用 ConfigureHttps 时,asp.net core 2.1 MVC 中的 TempData 为空?
- 3d - Aframe 使用自定义 GLSL 着色器加载带纹理的 obj
- laravel - Laravel 5.4 带有身份验证条件的 If 语句