我正在制作一個應用程式,定期將你的步驟資料上傳到Firestore進行跟蹤,我將所有的步驟資料與date:step一起添加到hashmap的key:value對中,但由于某些原因,每個單獨的key:value對都進入一個嵌套的map作為value,key為某個任意的數字。我搞不清楚為什么會發生這種情況。以下是代碼:
val stepMap = HashMap<String, String> ()
for (dp in dataSet.dataPoints) {
Log.i(TAG,"資料點:")
Log.i(TAG," Type: ${dp.dataType.name}")
Log.i(TAG," 開始。${dp.getStartTimeString()}")
Log.i(TAG," End: ${dp.getEndTimeString()}")
for (field in dp.dataType.field) {
Log.i(TAG," Field: ${field.name.toString()} 值。${dp.getValue(field)}")
stepMap.put("${dp.getStartTimeString()}"/span>, "${dp.getValue(field)}"/span>)
}
}
db.collection("user")
.document("" GoogleSignIn.getLastSignedInAccount(this).email)
.更新(LocalDateTime.now().toString(), stepMap)
這就是Firestore上的資料的樣子。

uj5u.com熱心網友回復:
嘗試 =>
db.collection("user")
.document("" GoogleSignIn.getLastSignedInAccount(this).email)
.更新(LocalDateTime.now().toString(), FieldValue.arrayUnion(stepMap))
uj5u.com熱心網友回復:
假設你有一個看起來像這樣的資料庫結構:
Firestore-root
|
---用戶(集合)
|
---$email (檔案)
|
--- UploadTime (地圖)
|
--- StartTime1: "value1"/span>
|
--- StartTime2: "value2"
|
--- StartTime3: "value3"
要更新StartTime1、StartTime2和StartTime3存在于UploadTime屬性下的值,請使用以下幾行代碼:
db.collection("user")
.document("" GoogleSignIn.getLastSignedInAccount(this).email)
.更新(
"UploadTime.StartTime1"/span>, "value4"/span>,
"UploadTime.StartTime2", "value5"。
"UploadTime.StartTime3", "value6"。
).addOnCompleteListener(/* ... /*) 。
資料庫中的結果將是:
Firestore-root
|
---用戶(集合)
|
---$email (檔案)
|
--- UploadTime (地圖)
|
--- StartTime1: "value4"/span>
|
--- StartTime2: "value5" --- StartTime2.
|
--- StartTime3: "value6"
由于這是一個更新操作,檔案中的所有其他欄位都將保持不被鎖定。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/306697.html
標籤:
