【发布时间】:2020-07-18 21:56:37
【问题描述】:
我想更新存储在我的 firebase 数据库中的初始服务器时间戳值,所以我这样做的方式是随后更新时间戳值,但这似乎在我运行应用程序时导致了重大问题,在首先它工作正常,但在两次更改值之后,它就像时间戳不断更新一样冻结。我不知道我怎样才能让它变得完美。
以下是我添加并想要更改时间戳值的代码。
mRootRef.child("Chat").child(mCurrentUserId).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (!dataSnapshot.hasChild(mChatUser)){
Map chatAddMap = new HashMap();
chatAddMap.put("seen",false);
chatAddMap.put("uid",mChatUser);
chatAddMap.put("timestamp", ServerValue.TIMESTAMP);
Map chatUserMap = new HashMap();
chatUserMap.put("Chat/" + mCurrentUserId + "/" + mChatUser,chatAddMap);
chatUserMap.put("Chat/" + mChatUser + "/" + mCurrentUserId,chatAddMap);
mRootRef.updateChildren(chatUserMap, new DatabaseReference.CompletionListener() {
@Override
public void onComplete(DatabaseError databaseError, DatabaseReference databaseReference) {
if (databaseError != null){
Log.d("CHAT LOG", databaseError.getMessage().toString());
}
}
});
}else {
mRootRef.child("Chat").child(mCurrentUserId).child(mChatUser).child("timestamp").setValue(ServerValue.TIMESTAMP);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
【问题讨论】:
-
如果您使用云功能更新时间戳会变得很容易。 .
-
我该怎么做?
-
你的函数连接到云函数了吗?您是否编写过 Firebase 云功能?我的意思是想知道我需要为你编写多少代码。如果你知道打字稿很简单.. 或者让我知道你的函数是如何工作的,我会用代码示例向你解释
-
@Dharmaraj 我对 typescript 不太了解,但我做了一些云函数代码,因为这是我在应用程序中用于通知服务的代码。
-
@Dharmaraj 为此使用云功能将是矫枉过正。这只是一个简单的无限循环错误。在这段代码中,设置了
Chat/${mCurrentUserId}/${mChatUser}的值,它会触发监听器,它会设置Chat/${mCurrentUserId}/${mChatUser}的值,它会触发监听器,等等。解决方案可以简单地将addValueEventListener换成addListenerForSingleValueEvent
标签: java android firebase timestamp