gpt4 book ai didi

firebase - 如何使用 Firebase 存储聊天的用户和群组

转载 作者:行者123 更新时间:2023-12-02 19:27:50 25 4
gpt4 key购买 nike

我想使用 Firebase 进行聊天。我需要为每个用户显示他们所属组的列表,并为每个组显示所有成员。

由于 Firebase 的设计方式,并且为了获得可接受的性能,我认为制作一个包含成员列表的所有组的列表,并为每个用户创建一个包含他们所属的所有组的条目。

我的第一个问题是,这是正确的方法吗?

如果是这样,我的第二个问题是如何自动添加(或删除)用户,即确保将用户添加到组中并将组添加到用户中或根本不添加(即从未存储在仅 1 个位置并使数据库不一致)?

最佳答案

您提出的数据模型与 Firebase 的建议一致。 best way to structure data in firebase 中概述了更详细的解释。

users/userid/groups
groups/groupid/users

Firebase 为原子操作提供 .transaction。您可以链接多个事务以确保数据一致性。您还可以使用 onComplete 回调函数。详细解释参见firebase transaction 。我正在使用相同的方法来使仪表板显示的多个消息计数保持最新。

嵌套事务的示例代码:

ref.child('users').child(userid).child(groupid).transaction(function (currentData) {
if (currentData === null) {
return groupid;
} else {
console.log('groupid already exists.');
return; // Abort the transaction.
}
}, function (error, committed, snapshot) {
if (committed) {
console.log('start a new transaction');
ref.child('groups').child(groupid).child(userid).tranaction(function (currentData) {
if (currentData === null) {
return userid;
} else {
console.log('Userid already exists.');
//add code here to roll back the groupid added to users
return; // Abort the transaction.
}
}, function (error, committed, snapshot) {
if (error) {
//rollback the groupid that was added to users in previous transaction
}
})
}
});

关于firebase - 如何使用 Firebase 存储聊天的用户和群组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29867328/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com