Firestore:以下哪种数据模型效率更高
Firestore: which of the following data models would be more efficient
我正在使用 React 和 firestore 制作一个 public 聊天应用,我正在使用以下模型存储聊天:
In firebase real-time database
userid:
username: username
status: (online | offline)
In firestore
rooms:
roomid:
roomOwner: username
participants: [username]
messages:
messageID:
roomid: roomid
from: username
createdAt: server timestamp
所以在查询数据时我想做这样的事情:
const query = messagesRef.where('roomid', ==, "USERS_ROOMID").limit(25);
那么我应该这样做还是将房间修改为:
rooms:
roomid:
owner: username
participants: [username]
messages: //Create new collection
messsageId:
createdAt: server timestamp
from: username
所以,我想这里的问题是,在根级集合(第一个选项)和子集合(第二个选项)之间进行选择。
根级集合(第一个选项)通常适用于多对多关系场景。由于聊天室和消息之间没有多对多关系,因此最好避免这种情况。
对于目前的情况,第二个选项是更好的选择。它提供了大小的好处,并且仍然提供了良好的查询能力。
请参考以下Firestore官方文档:
https://firebase.google.com/docs/firestore/manage-data/structure-data
我正在使用 React 和 firestore 制作一个 public 聊天应用,我正在使用以下模型存储聊天:
In firebase real-time database
userid:
username: username
status: (online | offline)
In firestore
rooms:
roomid:
roomOwner: username
participants: [username]
messages:
messageID:
roomid: roomid
from: username
createdAt: server timestamp
所以在查询数据时我想做这样的事情:
const query = messagesRef.where('roomid', ==, "USERS_ROOMID").limit(25);
那么我应该这样做还是将房间修改为:
rooms:
roomid:
owner: username
participants: [username]
messages: //Create new collection
messsageId:
createdAt: server timestamp
from: username
所以,我想这里的问题是,在根级集合(第一个选项)和子集合(第二个选项)之间进行选择。
根级集合(第一个选项)通常适用于多对多关系场景。由于聊天室和消息之间没有多对多关系,因此最好避免这种情况。
对于目前的情况,第二个选项是更好的选择。它提供了大小的好处,并且仍然提供了良好的查询能力。
请参考以下Firestore官方文档: https://firebase.google.com/docs/firestore/manage-data/structure-data