在我发布活动的应用中。我希望在活动开始时只获取所有level0Node
个节点。我这样做是这样的:
rootNode.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
Iterable<DataSnapshot> level0Nodes = dataSnapshot.getChildren();
}
@Override
public void onCancelled(DatabaseError databaseError) {}
});
但我面临的问题是,如果level1Node
上发生了任何更新,则再次调用onDataChanged
我不想要的。我怎样才能做到这一点?
答案 0 :(得分:2)
您正在寻找ValueEventListener
。
将您的rootNode.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
Iterable<DataSnapshot> level0Nodes = dataSnapshot.getChildren();
}
@Override
public void onCancelled(DatabaseError databaseError) {}
});
替换为1,代码如下所示:
UPDATE [ATIDGEN] SET [LASTID] = '25' WHERE [TABLEID] = 'ATLOGIN';
//success
::SQLEndTran(SQL_HANDLE_DBC, m_hdbc, SQL_COMMIT);
//success
BACKUP DATABASE [ArazDB2] TO DISK = 'D:\Amin88\Total\BKUP-13950621.BAK' WITH INIT,NOSKIP
//state 42000, Cannot perform a backup or restore operation within a transaction.
有关详细信息,请参阅Official Docs
答案 1 :(得分:1)
您有两种方法可以从特定参考中一次性获取总数据。
rootNode.addValueEventListener(new ValueEventListener (){}
//这是你正在使用的,根据文档,当这个节点 - rootNode上的数据发生变化时会触发。如果您只想通过调用
rootNode.removeEventListener()方法,用于删除更多更新。
根据文档,这只会触发一次,所以当你的孩子发生变化时,这个列表器不会触发,你的问题就会得到解决。
加上我只是建议你阅读firebase的完整文档,因为你的问题非常基础。