![](/img/trans.png)
[英]Correct way to use FieldValue.serverTimestamp() in Typescript
[英]Swift: How to use FieldValue.serverTimestamp() in document().setData() Firestore database?
我想要做的就是在setData()
中設置一個 Firebase 服務器時間戳,但我似乎無法弄清楚如何讓它工作。
這是我嘗試過的:
for document in snapshot!.documents {
do {
try document.reference.collection("Data").document()
.setData(from: ["first" : FieldValue.serverTimestamp(), "second" : dataStringArray])
print("Data successfully written to firestore.")
} catch let error {
print("Error writing data to firestore: \(error)")
}
}
目的是在每次寫入數據時將 serverTimestamp 設置為字段,以獲取數據寫入的歷史記錄。
它一直顯示錯誤Type of expression is ambiguous without more context
,所以我嘗試通過將其轉換為FieldValue
來給它一些上下文,但隨后我得到相同的ambiguous without more context
問題,所以我嘗試將其轉換為ServerTimestamp
或Timestamp
,我得到了Cannot convert value of type 'FieldValue' to type 'Timestamp' in coercion
。
它在 Android 中運行良好,只需執行以下操作:
document.reference.collection("Data").document().set(FieldValue.serverTimestamp() to formattedDataList)
但由於某種原因,它在 Swift 中不起作用。 我一直在尋找幾個小時試圖理解這個問題,但一直無法找到一個好的解釋。
我也試過這個:
setData(from: [FieldValue.serverTimestamp() : dataStringArray])
但我收到Error writing data to firestore: invalidValue([<FSTServerTimestampFieldValue: 0x280412de0>:
其實我是想寫評論的,但是由於限制不能添加代碼片段,就變成了答案。 如果這不是真正適合您的答案,請原諒我。
在我的應用程序中的聊天中,我使用 Date 作為 sendDate(請參見下面我的代碼中的示例),這對您來說不是一個選項嗎?
func addNewChatMessageFromData( _ id: String,
_ chatId: String,
_ messageText: String,
_ messageType: String,
_ usersIds: [String],
_ senderId: String,
_ senderName: String,
_ lastSenderImageLink: String,
_ sendDate: Date
) {
do {
let chatMessageRef = db.collection("chatMessages").document().documentID
let newChatMessage = ChatMessageFB(chatMessageRef, chatId, messageText, messageType, usersIds, senderId, senderName, lastSenderImageLink, sendDate)
try db.collection("chatMessages").document(chatMessageRef).setData(from: newChatMessage) { _ in
print("Successful writing ChatMessage to Firestore")
}
} catch let error {
print("Error writing ChatMessage to Firestore: \(error)")
}
}
最好的,塞巴斯蒂安
問題是我使用setData(from:)
而不是簡單地使用setData()
改變這個
.setData(from: ["first": FieldValue.serverTimestamp(), "second": dataStringArray])
對此
.setData(["first": FieldValue.serverTimestamp(), "second": dataStringArray])
完全解決了我的問題。
看來我正在嘗試使用旨在簡化制作自定義對象的擴展,但由於某種原因它沒有添加到文檔中。 我用錯了,因為我試圖像文檔中的那樣使用它。
這個 StackOverflow Question 解釋了更多關於這個問題的信息。 嘗試在 Cloud Firestore ios API 中調用 setData(from: ) 時出錯。 我該如何解決?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.