Json 您将如何在Firebase中为用户和朋友的集合建模?
我正在尝试使用Firebase创建一个数据库(json)。 我搜索了文档和网络,但找不到一个明确的开始方式。 我想要一个用户数据库。 每个用户(表示为UID)都应该有一个昵称和一个朋友列表 我尝试创建一个.json文件,如下所示:Json 您将如何在Firebase中为用户和朋友的集合建模?,json,firebase,firebase-realtime-database,nosql,Json,Firebase,Firebase Realtime Database,Nosql,我正在尝试使用Firebase创建一个数据库(json)。 我搜索了文档和网络,但找不到一个明确的开始方式。 我想要一个用户数据库。 每个用户(表示为UID)都应该有一个昵称和一个朋友列表 我尝试创建一个.json文件,如下所示: { users:{ } } { users:{ UID:{ nickname: hello friends: UID2 } UID2:{ nickna
{
users:{
}
}
{
users:{
UID:{
nickname: hello
friends: UID2
}
UID2:{
nickname: world
friends: UID
}
}
并将其添加到Firebase控制台以开始使用,但无法使用。
我怎么做
数据库应如下所示:
{
users:{
}
}
{
users:{
UID:{
nickname: hello
friends: UID2
}
UID2:{
nickname: world
friends: UID
}
}
我不知道我是否做对了,所以我非常感谢你们在这个问题上给我的任何帮助。
提前谢谢 似乎是一个好的开始。不过我要做两个改变
/users
来获取该列表。这意味着您不仅可以获取每个用户的用户名,还可以获取他们的好友列表。您向用户显示所有这些数据的可能性很小,因此这意味着您只是浪费了他们的一些带宽friends
属性值。当你开始构建应用程序时,你需要存储多个好友。最常见的方法是存储UID数组或列表:
[ UID1, UID2, UID3 ]
或
不幸的是,这些数据结构的类型错误。数组和第二个集合都是列表:一个(可能)非唯一值的有序集合。但是,朋友的集合不一定要订购,它必须是独一无二的。我要么在收藏中,要么不在收藏中,我不可能多次出现在收藏中,而且顺序通常并不重要。这就是为什么您经常使用上述模型查找朋友.contains(“UID1”)
或ref.orderByValue().equalTo(“UID1”)
操作
更好的模型是将数据存储为一个集合。集合是无序值的集合,这些值必须是唯一的。非常适合收集朋友。为了将其存储在Firebase中,我们使用UID作为集合的键。因为我们不能存储没有值的键,所以我们使用true
作为伪值
这就产生了这个数据模型:
{
users:{
UID:{
nickname: hello
}
UID2:{
nickname: world
}
}
friends:{
UID:{
UID2: true
}
UID2:{
UID: true
}
}
}
一般来说,NoSQL数据建模和Firebase数据建模还有很多要说/要学的。要了解这一点,我建议大家阅读和观看。非常感谢!真的帮助我更好地理解了事情!这是可行的,但如果你需要找朋友的朋友,或者找18岁以上的朋友,你就必须求助于其他解决方案。可能是第三方服务器,在客户端进行过滤,或者使用云功能。在任何情况下,一旦你需要这种关系和查询,你可能已经超过了像Firebase(或Mongo)这样的数据库。@SebastianDenis他解释道,这意味着你不仅可以得到每个用户的用户名,还可以得到他们的朋友列表。如果某些用户有多达200个朋友,并且在您的一个视图中(例如管理员页面中的用户表视图),在您的结构中,您在查询用户列表时会得到大量不必要的数据。@Frank,如果我必须显示某个特定用户的所有朋友的昵称,该怎么办?我应该获取所有用户的昵称并在客户端进行筛选吗?或者我应该询问每个朋友?