【发布时间】:2020-07-28 06:40:19
【问题描述】:
我有多个帖子,每个帖子都有自己的 cmets。因此,当我打开帖子的评论列表时,我想开始监听ChildAdded 事件以加载 cmets。
我有
public void StartListening(string postKey) {
databaseReference
.Child(FirebaseConstants.DatabasePosts)
.Child(postKey)
.Child(nameof(PostInfo.Comments))
.ChildAdded += OnCommentChildAdded;
}
这将获取所有当前的 cmets,然后如果有任何实时的 cmets(包括当前用户),它也会显示在列表中。
当我关闭该帖子并转到另一个帖子时,我想停止收听旧帖子上的 cmets 并开始收听另一个帖子。所以我有
databaseReference
.Child(FirebaseConstants.DatabasePosts)
.Child(postKey)
.Child(nameof(PostInfo.Comments))
.ChildAdded -= OnCommentChildAdded;
停止收听原来的 postKey,然后我用新的 postKey 再次调用第一个函数。
我的问题是,当我返回原始帖子并调用 StartListening(originalPostKey); 时,它会很好地加载所有现有的孩子,但是当我实时添加评论时,它会触发 OnCommentChildAdded 两次,就像第一次订阅一样活动从未取消订阅。
有谁知道 Unity C# 中的 Firebase 子事件是如何工作的,以及如何在没有 hack 的情况下让它工作(例如检查一个集合以查看是否已添加 postKey)。 p>
【问题讨论】:
标签: c# firebase unity3d firebase-realtime-database