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

J.D*_*J.D 3 javascript timestamp firebase google-cloud-firestore

试图从 javascript 日期转换为 firestore 时间戳抛出

TypeError: Cannot read property 'Timestamp' of undefined
Run Code Online (Sandbox Code Playgroud)

我以两种方式尝试过:

  1. 使用 firebase-admin
const admin = require('firebase-admin');
const db = admin.firestore();
const timestamp = db.Timestamp.fromDate(new Date(date));
Run Code Online (Sandbox Code Playgroud)
  1. 使用 firebase.firestore:
const firebase = require('firebase');
const timestamp = firebase.firestore.Timestamp.fromDate(new Date(date));
Run Code Online (Sandbox Code Playgroud)

日期用作设置了一个param新日期的格式如下:“2017年1月29日”。

预期结果:firestore 时间戳。

实际结果:类型错误:无法读取未定义的属性“时间戳”

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

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

Dou*_*son 8

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

如果您使用的是 Admin SDK:

const admin = require('firebase-admin');
const timestamp = admin.firestore.Timestamp.fromDate(...)
Run Code Online (Sandbox Code Playgroud)

  • 这个正在部署的云功能上工作,有没有办法让它在我本地测试我的云功能时工作?它返回 TypeError:无法读取未定义的属性(读取“fromDate”) (3认同)

Pet*_*ing 6

接受的答案在最新版本的 firebase-admin (v11) 中不起作用。admin.firestore.Timestamp 未定义。以下是我在新版本中如何让它工作的方法:

const { Timestamp } = require('firebase-admin/firestore')
const timestamp = Timestamp.fromDate(new Date(...))
Run Code Online (Sandbox Code Playgroud)