[英]How can I create a unique key and use it to send data in Firebase?
我在項目中使用Firebase,並且嘗試使用Firebase創建唯一密鑰。 我想使用此鍵在用戶開始活動時發送帖子。 像這樣:
"Posts"
|
-> "Parent Unique key"
|
-> "child unique key 1"
-> "child unique key 2"
-> "child unique key 3"
...
我想創建Parent Unique key
並希望通過它發送帖子。 我知道如何使用push()
在firebase中創建唯一密鑰,但是問題是當用戶重新啟動活動時,將生成一個新的唯一密鑰。 創建一次后,我不想再次創建相同的父項,並且由於多個用戶具有不同的ID,因此我無法在此處使用user_id。 我也不想將父密鑰存儲在某種存儲介質中。 是否可以在Firebase中創建此類密鑰?
如果在onCreate()
方法中執行此操作:
DatabaseReference ref=FirebaseDatabase.getInstance().getReference().child("Posts").push();
然后,是的,每次您輸入該活動時,都會創建一個新的推送ID。 這是因為push()
生成一個隨機ID。
為了解決這個問題,您需要稍后..或在某種條件下但不是開始時添加push()
。
因此,您可以單擊按鈕添加它:
ref.push().child("name").setValue(name);
這樣,每次單擊按鈕時,它都會生成一個推送ID,而不是在您重新啟動活動時生成。
您可以使用push()在Firebase數據庫中創建唯一鍵,然后在該鍵下添加子節點。 現在,下次您進行該活動時,請首先檢查父節點是否存在。 如果該節點存在,請保存父節點密鑰並使用它來保存新的子節點。
String strParentKey;
DatabaseReference mDatabaseReference = FirebaseDatabase.getInstance().getReference("Posts");
mDatabaseReference.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (dataSnapshot != null && dataSnapshot.exists()) {
// parent node exists, get parent node from datasnapshot
strParentKey = dataSnapshot.value().toString();
} else {
// parent node doesn't exists, generate parent node using push
strParentKey = FirebaseDatabase.getInstance().getReference().child("Posts").push().getKey();
}
}
@Override
public void onCancelled(final DatabaseError pDatabaseError) {
pOnChildCheckListener.onChildDoesntExist();
}
});
現在使用parentKey,您可以使用該引用添加子節點。
String childKey = FirebaseDatabase.getInstance().getReference("Posts").child(strParentKey).push().getKey();
希望這會幫助您找到解決方案。
要解決此問題,請使用以下代碼:
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
String uniqueKey = rootRef.child("Posts").push().getKey();
DatabaseReference uniqueKeyRef = rootRef.child("Posts").child(uniqueKey);
因此,要添加數據,請僅使用uniqueKeyRef
參考。 因此,使用此代碼,您將僅創建一次唯一ID。 您將可以在單個ID下添加這些孩子。
如果您需要其他密鑰,請參閱UUID ,它可以幫助您為Firebase數據庫生成唯一密鑰,而不必使用push()方法。
使用時間戳記作為唯一鍵,firebase本身會創建唯一的id
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.