【问题标题】:serverTimestamp() in firestore returns ServerTimestampTransformfirestore 中的 serverTimestamp() 返回 ServerTimestampTransform
【发布时间】:2020-02-05 10:37:13
【问题描述】:

以下代码突然返回 ServerTimestampTransform 而不是实际的服务器时间戳

admin.firestore.FieldValue.serverTimestamp()

我正在使用最新版本 8.6.0 的 firebase-admin,https://www.npmjs.com/package/firebase-admin

关于这个的任何想法,

-贾尼

【问题讨论】:

标签: firebase google-cloud-firestore timestamp firebase-admin


【解决方案1】:

在 firebase 函数 admin sdk(截至 9.8.0)中,您的替代方案是 admin.firestore.Timestamp.now

const getServerTimestamp = admin.firestore.Timestamp.now; //Timestamp object getter

let current = getServerTimestamp(); //Creates your Firebase Timestamp object

let jsDate = current.toDate(); //To convert to JS Date object

let unixmili = +new Date(jsDate); //To convert JS Date to unix milliseconds

定义:

(method) FirebaseFirestore.Timestamp.now(): FirebaseFirestore.Timestamp

用当前日期创建一个新的时间戳,以毫秒为单位 精度。

由于它在服务器上运行,这将是您的“服务器时间戳”。

请记住,UNIX 时间戳与时区无关,因此 Firebase 服务器当前的位置无关紧要。

【讨论】:

    【解决方案2】:

    这就是示例在 github 代码中概述的内容

    /**
       * Returns a sentinel used with set(), create() or update() 
     to include a
       * server-generated timestamp in the written data.
       *
       * @return {FieldValue} The FieldValue sentinel for use in 
     a call to set(),
       * create() or update().
       *
       * @example
       * let documentRef = firestore.doc('col/doc');
       *
       * documentRef.set({
       *   time: Firestore.FieldValue.serverTimestamp()
        * }).then(() => {
        *   return documentRef.get();
        * }).then(doc => {
        *   console.log(`Server time set to ${doc.get('time')}`);
       * });
       */
      static serverTimestamp(): FieldValue {
        return ServerTimestampTransform.SERVER_TIMESTAMP_SENTINEL;
     }
    

    【讨论】:

    • 是的,那是什么意思?什么是 SERVER_TIMESTAMP_SENTINEL ?请注意,代码之前已经工作过
    猜你喜欢
    • 1970-01-01
    • 2020-06-06
    • 1970-01-01
    • 2020-01-16
    • 1970-01-01
    • 2021-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多