开发者问题收集

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

2019-07-24
4116

尝试将 javascript 日期转换为 firestore 时间戳时抛出错误

TypeError: Cannot read property 'Timestamp' of undefined

我尝试了两种方法:

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

date new Date 中用作参数,格式如下:“2017-01-29”。

预期结果 :firestore 时间戳。

实际结果 :TypeError:无法读取未定义的属性“Timestamp”

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

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

3个回答

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

如果您使用的是 v11 之前的 Admin SDK:

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

或 v11:

const { Timestamp } = require('firebase-admin/firestore')
const timestamp = Timestamp.fromDate(...)
Doug Stevenson
2019-07-24

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

const { Timestamp } = require('firebase-admin/firestore')
const timestamp = Timestamp.fromDate(new Date(...))
Pete Shilling
2022-07-21

导入

import * as firebase from 'firebase/app';

并使用

created_at = firebase.firestore.FieldValue.serverTimestamp();   
ztvmark
2019-10-23