Raj*_*jat 10 javascript nosql firebase firebase-realtime-database
我有一个Firebase数据库结构问题.我的方案接近聊天应用程序.以下是具体细节
- users(node storing several users of the app)
- id1
name: John
- id2
name: Meg
- id2
name: Kelly
- messages(node storing messages between two users)
- message1
from: id1
to: id2
text: ''
- message2
from: id3
to: id1
text: ''
Run Code Online (Sandbox Code Playgroud)
现在想象为单个用户构建对话视图.所以我想从特定用户和该特定用户获取所有消息
我现在写的如下:
let fromMessagesRef = firebase.database().ref('messages').orderByChild('from').equalTo(firebase.auth().currentUser.uid)
fromMessagesRef.once("value").then((snapshot) => {/* do something here*/})
let toMessagesRef = firebase.database().ref('messages').orderByChild('to').equalTo(firebase.auth().currentUser.uid)
toMessagesRef.once("value").then((snapshot) => {/* do something here*/})
Run Code Online (Sandbox Code Playgroud)
问题:
我会存储这样的数据:
- users(node storing several users of the app)
- id1
name: John
messages
message1: true
message2: true
- id2
name: Meg
messages
message1: true
message3: true
- id3
name: Kelly
messages
message2: true
message3:true
- messages(node storing messages between two users)
- message1
from: id1
to: id2
text: ''
- message2
from: id3
to: id1
text: ''
- message3
from: id2
to: id3
text: ''
Run Code Online (Sandbox Code Playgroud)
Firebase建议存储这样的内容.所以在你的情况下你的查询将是
let fromMessagesRef = firebase.database().child('users').child(firebase.auth().currentUser.uid).child('messages')
Run Code Online (Sandbox Code Playgroud)
这使它非常快,因为没有订单完成.然后,您将遍历每条消息并从消息节点获取它的配置文件.
| 归档时间: |
|
| 查看次数: |
1354 次 |
| 最近记录: |