【发布时间】:2018-03-05 19:04:10
【问题描述】:
我在一个网站上实现了一个表单来创建 firebase 用户,并根据表单中的选定状态在 firebase 数据库中为用户添加一个节点。
例如,如果用户在表单中选择“夏威夷”然后创建帐户,则帐户信息将存储在 firebase db 中的“夏威夷/id”中。
// JSON structure
{
"Hawaii": {
"place1Id": {
//infos
},
"place2Id": {
//infos
}
},
"New York": {
"place1Id": {
//infos
},
"place2Id": {
//infos
}
}
}
我的问题是如何确保稍后当用户将信息添加到他的帐户时,使用之前创建帐户时提供的凭据,此信息将存储在正确的节点中(例如夏威夷)
我试图比较当前用户 id 和来自 States 节点的键,但我的数据库非常大(并且会变得更大),因此代码最多需要 10 秒才能确定数据库的哪个节点用户是。 并且每个页面都必须发生相同的过程,因此这不是好的解决方案。
var placesRef = firebase.database().ref();
placesRef.once("value", function(snpashot) {
if (snpashot.child("Hawaii").hasChild(user.uid)) {
console.log("Place is in Hawaii");
activiteRef = firebase.database().ref().child("Hawaii").child(user.uid);
}});
你能帮我解决这个问题吗?
谢谢!
【问题讨论】:
-
首先,您可能会发现 Firestore 更合适。无论如何,将地址存储在
users > uid的子节点中。这样,用户可以拥有多个地址,例如家庭和办公室。 -
我已经尝试过做 users > uid 但使用 firebase。主要问题是我希望 iOS 应用程序用户只能看到他们附近的地方。我尝试使用 geofire 或下载所有数据库,然后只显示最近的地点,但我的数据库太大,以至于在应用程序上下载这些地点需要 10 多秒。使用 Firestore 会更快吗?
-
Geofire/Firebase 非常适合您的用例。我让它在这个应用程序上工作。单击地图图标并输入 San Francisco 以查看它是否有效。 getaa.org
-
我有5万多条,你确定不会慢吗?
-
阅读 geofire 文档?...
标签: javascript firebase firebase-realtime-database firebase-authentication