[英]Server timestamp using firebase
我正在研究評論/評論過程,並希望能夠將用戶給出的每條評論/評論存儲在 firebase 中,同時給出的每條評論/評級都在相同的時間戳下。 我最初使用的是 JS 函數 new Date().getTime() ,這很好用,但為了確保用戶不能篡改該值(即通過更改他們計算機上的日期),我想使用 firebase 時間戳反而。
現在,我希望最終產品是一張地圖:
[chatStartTime] : {
review : stars,
time : chatStartTime
}
然后我使用 transaction.set() 將其合並到 firebase 文檔中。 現在的問題是 ChatStartTime,它應該代表這個時間戳。 我有代碼:
var chatStartTime = firebase.firestore.FieldValue.serverTimestamp();
順便說一句,我也希望得到:
var chatStartTimeDate = chatStartTime.toDate();
然而,chatStartTimeDate 會導致錯誤——我的理解是,這是因為 chatStartTime 在被添加到文檔之前本質上是“空的”; 有什么辦法可以解決這個問題並使用這個功能嗎? 另外,如果我只對這兩個實例使用 chatStartTime,我最終會在表單的數據庫上得到一個映射:
[object Object]
review : 4.5
time :
.sv: "timestamp"
其中 .sv 是字符串類型。 我該如何解決這個問題? 我希望最終結果看起來像(例如)
1579194722735
review : 4.5
time : 1579194722735
FieldValue.serverTimestamp()
值在寫入時寫入服務器。 所以你不能在寫發生之前得到它。 但是,您可以從響應中獲取writeTime
。 這應該給你你所追求的。 或者,您可以在寫入文檔以獲取時間戳后將其讀回(但這似乎沒有必要)。
myCollection
.doc('foo')
.create({ timestamp: FirebaseFirestore.FieldValue.serverTimestamp() })
.then(result => {
const serverTime: Date = result.writeTime.toDate();
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.