我需要一个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()
,您可以:
- 用
OrderByKey().LimitToLast(1)
读取最近的节点,以确定其密钥 - 然后从
OrderByKey().StartAt("key from step 1")
开始收听。