如何使用firestore admin nodejs sdk设置服务器时间戳?

Posted

技术标签:

【中文标题】如何使用firestore admin nodejs sdk设置服务器时间戳?【英文标题】:how to set server time stamp with firestore admin nodejs sdk? 【发布时间】:2018-06-10 23:18:32 【问题描述】:
const firebase = require('@firebase/app').default;
require('@firebase/firestore')

const admin = require('firebase-admin')
const functions = require('firebase-functions')

// initialize the admin SDK...    

exports.setUpdatedDate = functions.firestore.document('/foos/fooId/bars/barId')
    .onCreate(event => 
      admin.firestore().collection('foos').doc( event.params.fooId )
            .set(
                updatedDate: firebase.firestore.FieldValue.serverTimestamp()
            , merge:true)
    )

运行上面的函数shell,我得到了:

Cannot encode type ([object Object]) to a Firestore Value
at Function.encodeValue (...\functions\node_modules\@google-cloud\firestore\src\document.js:772:11

那么如何使用 firestore admin nodejs sdk 设置服务器时间戳

【问题讨论】:

您似乎没有初始化管理 SDK。此外,您似乎需要客户端 SDK。这些不适用于 Cloud Functions。你只需要firebase-admin。 @DougStevenson thx,我确实做到了,只是没有发布。 :) 【参考方案1】:

您可以使用admin.firestore.FieldValue.serverTimestamp()

API 文档:https://firebase.google.com/docs/reference/admin/node/admin.firestore.FieldValue 用法示例:https://github.com/firebase/firebase-admin-node/blob/master/test/integration/firestore.js#L61

【讨论】:

谢谢!您认为更新最后更新日期最好通过云功能或客户端事务完成? 我觉得这是应该随着客户事务更新的东西。 使用链接失效 我目前正在使用这个函数,它返回一个空值

以上是关于如何使用firestore admin nodejs sdk设置服务器时间戳?的主要内容,如果未能解决你的问题,请参考以下文章

在 Firestore 上的 Document (NodeJS) 中设置 DocumentReference

NodeJS中的Firestore实时更新连接

限制对 admin-sdk 的 firestore 访问

如何使用firebase-admin在firestore中将日期保存为时间戳?

如何将 firebase 的 firestore/admin sdk 与 next.js 一起使用

导出 Firestore 备份数据的云功能。使用 firebase-admin 或 @google-cloud/firestore?