如何确保远程数据库中没有数据?

时间:2016-12-12 12:42:54

标签: android firebase firebase-realtime-database

我想使用Firebase数据库功能之一 - Transaction。为简单起见,我想说如果存在则要更新记录,如果不存在则创建新记录。

代码看起来像这样:

ref.runTransaction(new Transaction.Handler() {
        @Override
        public Transaction.Result doTransaction(MutableData mutableData) {
                if (mutableData.getValue() == null) {
                     // create new data
                } else {
                     // update new data
                }
                return Transaction.success(mutableData);
        }

        @Override
        public void onComplete(DatabaseError databaseError, boolean committed,
                               DataSnapshot dataSnapshot) {
        }
});

但Firebase文档中存在一个问题:

  

因为doTransaction()被多次调用,所以它必须能够处理空数据。即使远程数据库中存在现有数据,当运行事务函数时,它也可能不会在本地缓存,导致初始值为null。

所以有一次我将mutableData.getValue()作为null然后我应该创建新数据,但实际上它是null,因为Firebase还没有缓存它。

我如何区分这两种情况?

0 个答案:

没有答案