Unity Firebase .ChildAdded监听触发器为所有已经存在的孩子?



我需要一个void来触发当一个新的Child从我的Firebase数据库添加到一个特定的分支

DBreference.Child("Users").Child(User.UserId).Child(chatto).ChildAdded += HandleChildAdded;

在HandleChildAdded void中,我有一个Debug.Log,它会触发每个已经存在的孩子,而不是只有当一个孩子被添加时。有人知道怎么解决这个问题吗?

当您为ChildAdded事件附加侦听器时,将立即为每个现有的子事件调用该侦听器,然后为以后添加的每个子事件调用该侦听器。没有办法改变这个行为。


如果不想接收现有子节点的通知,则需要使用查询/条件排除那些子节点。例如,如果所有节点都有添加时间戳,则可以开始侦听在"现在"之后创建的节点。例如:

ref.OrderByChild("timestamp").StartAt(DateTime.UtcNow.Millisecond).ChildAdded...

如果您没有时间戳,但例如您的节点是有序的,因为您使用Push(),您可以:

  1. OrderByKey().LimitToLast(1)读取最近的节点,以确定其密钥
  2. 然后从OrderByKey().StartAt("key from step 1")开始收听。

最新更新