Firestore データの追加 現在時刻を配列に格納する (Swift)
現在時刻を何度も取得して、Firestoreドキュメントの配列に格納していくやり方で困ったので、メモ&共有。
ポイント1. 現在時刻はTimestamp(date: Date())で取得。
Fieldvalue.timestamp() で時刻を取得することもできるんですが、
これをFirestoreのTimestamp配列フィールドに入れようとするとエラーになります。
2020年3月時点では、Fieldvalue.timestamp()は配列に対応していないようです。
よって、公式ドキュメントにさらっと書いてある「Timestamp(date: Date())」で現在時刻を取得してTimestamp配列に入れると、こちらは問題なし。
ポイント2.arrayUnionは配列の新規作成でも使える
公式ドキュメントでは、arrayUnionは「配列がある場合に」と記載されていますが、以下のように、配列がない場合でも1番目の配列要素を作成してくれました。
以上、ご参考まで。
let historyRef = db.collection("history").document(String(user!.uid))
historyRef.setData([
"userid" : String(user!.uid),//ユーザID
"objectid" : objectid,
//arrayUnionで、初回配列がない場合でもた1個目の配列要素を自動で追加してくれる
"history" : FieldValue.arrayUnion([Timestamp(date: Date())])
], merge: true
) { err in
if let err = err {
print("Error adding document: \(err)")
} else {
print("Document added with ID")
}
}
Author And Source
この問題について(Firestore データの追加 現在時刻を配列に格納する (Swift)), 我々は、より多くの情報をここで見つけました https://qiita.com/yoheionishi/items/16d36a222b45227dd7de著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .