Flutter Firestore Server端时间戳

spo*_*oss 11 dart flutter google-cloud-firestore

我需要使用Flutter应用程序在添加到Firestore的新文档上添加服务器端时间戳.我看到我应该使用,FieldValue.serverTimestamp但我不知道在哪里可以找到它.

spo*_*oss 23

截至9月5日,更新的cloud_firestorev0.8.0库现已拥有FieldValue.serverTimestamp().一切都在宇宙中很好

  • 看起来这是正确的答案,但请添加更多代码来显示存储变量的数据类型应该是什么,以及如何按此值排序? (7认同)

Joh*_*avi 23

'timestamp' : Timestamp.now()

Timestamp.now()是 cloud_firestore 的一部分;


例子 在此处输入图片说明 显示库从 cloud_firestore 导入并创建Docs 的屏幕截图a server-generated timestamp in the written data.

  • 我相信 Timestamp.now() 返回客户端计算机时间中的时间戳,而不是服务器端时间戳。 (24认同)
  • 文档现在导致 `FieldValue.serverTimestamp()` 这个 `Timestamp.now()` 返回以微秒为单位的客户端日期时间 (4认同)

Kor*_*fin 11

通过添加示例用法来扩展 @spongyboss 的答案(截至 2020 年 4 月):

_firestore.collection('messages').add({
                      'text': messageText,
                      'sender': loggedInUser.email,
                      'created': FieldValue.serverTimestamp()
                  });
Run Code Online (Sandbox Code Playgroud)

'created' 将被存储为 timestamp

样品分选:

_firestore.collection('messages')
          .orderBy('created', descending: false)
          .snapshots()
Run Code Online (Sandbox Code Playgroud)