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

Posted

技术标签:

【中文标题】如何使用firebase-admin在firestore中将日期保存为时间戳?【英文标题】:How to save date as Timestamp in firestore using firebase-admin? 【发布时间】:2019-12-02 01:25:06 【问题描述】:

尝试从 javascript 日期转换为 firestore 时间戳

TypeError: Cannot read property 'Timestamp' of undefined

我尝试了两种方式:

    使用 firebase-admin
const admin = require('firebase-admin');
const db = admin.firestore();
const timestamp = db.Timestamp.fromDate(new Date(date));
    使用 firebase.firestore:
const firebase = require('firebase');
const timestamp = firebase.firestore.Timestamp.fromDate(new Date(date));

日期new Date中用作参数的格式如下:“2017-01-29”。

预期结果:firestore 时间戳。

实际结果:TypeError: Cannot read property 'Timestamp' of undefined

注意:db 和 firebase 均为 null 或未定义。

是否有从 javascript 日期对象创建 Firestore 时间戳的明确方法?

【问题讨论】:

【参考方案1】:

您的第二个示例根本没有使用 Firebase Admin SDK - 那是 Firebase 网络客户端 SDK。

如果您使用的是 Admin SDK:

const admin = require('firebase-admin');
const timestamp = admin.firestore.Timestamp.fromDate(...)

【讨论】:

我将第一个选项更改为 admin.firstore.Timestamp.fromDate(new Date(date)) 并且它正在工作。【参考方案2】:

导入

import * as firebase from 'firebase/app';

并使用

created_at = firebase.firestore.FieldValue.serverTimestamp();   

【讨论】:

这与 Firebase Admin Sdk 无关。

以上是关于如何使用firebase-admin在firestore中将日期保存为时间戳?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Firebase-admin 为 NodeJs 设置 timestampsInSnapshots 设置?

如何忽略“firebase-admin 似乎已安装在不受支持的环境中。”?

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

使用 firebase-admin。服务帐户凭据有啥用途?

有没有办法在没有 Firebase-Admin 的情况下在 Firebase Firestore JS 中使用 FieldValue.serverTimestamp()

firebase 云功能中带有 typescript 的 firebase-admin