如何使用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 Firestore JS 中使用 FieldValue.serverTimestamp()