如何从Firebase云功能访问firestore.Timestamp

Mat*_*lin 8 node.js firebase typescript google-cloud-functions google-cloud-firestore

我们正在将Firestore Date对象转换为新的Timestamp对象

我们通过导入firestore在前端成功完成了

import { firestore } from 'firebase';
Run Code Online (Sandbox Code Playgroud)

然后用firestore.Timestamp替换所有Date对象类型

  startDate: firestore.Timestamp;
Run Code Online (Sandbox Code Playgroud)

问题是我似乎无法找到一种方法来访问节点中的Timestamp.

我已经尝试记录管理员和函数对象,但似乎根本找不到时间戳

import * as functions from 'firebase-functions';
import * as admin from 'firebase-admin';
...
console.log(functions)
console.log(admin)
Run Code Online (Sandbox Code Playgroud)

这些是我尝试过的,他们都返回'时间戳不存在于未定义'

import * as firebase from 'firebase';
...
firebase.firestore.Timestamp.now()
Run Code Online (Sandbox Code Playgroud)
const firebase = require('firebase')   
...
firebase.firestore.Timestamp.now()
Run Code Online (Sandbox Code Playgroud)
import * as admin from 'firebase-admin';
...
admin.firestore.Timestamp.now()
Run Code Online (Sandbox Code Playgroud)

这是我的package.json dependancies

"dependencies": {
    "@sendgrid/mail": "^6.2.1",
    "@types/node-fetch": "^1.6.8",
    "chai": "^4.1.2",
    "chai-as-promised": "^7.1.1",
    "cors": "^2.8.4",
    "encodeurl": "^1.0.2",
    "fetch": "^1.1.0",
    "firebase": "^4.13.0",
    "firebase-admin": "^5.12.0",
    "firebase-functions": "^1.0.1",
    "generator-karma": "^2.0.0",
    "google-distance": "^1.0.1",
    "mailgun-js": "^0.13.1",
    "moment": "^2.22.1",
    "node-fetch": "^2.1.2",
    "request": "^2.85.0",
    "sinon": "^4.0.1",
    "typescript": "^2.8.3"
},
"private": true,
"devDependencies": {
    "@angular/cli": "^1.7.4",
    "@types/cors": "^2.8.3",
    "@types/jasmine": "^2.6.6",
    "ts-loader": "^3.5.0",
    "webpack-node-externals": "^1.7.2"
}
Run Code Online (Sandbox Code Playgroud)

Mat*_*lin 16

随着Firebase Functions V2.0的发布,他们似乎已经在Firebase Admin SDK软件包中添加了Timestamp支持。

这里看看官方文档。

import { firestore } from 'firebase-admin';
...
const now = firestore.Timestamp.now()
Run Code Online (Sandbox Code Playgroud)

  • 那不是“ firebase函数” npm软件包。这就是Firebase Admin SDK,您当然可以在Cloud Functions for Firebase或任何节点进程中使用它。 (2认同)

Dou*_*son 5

在这个时刻,Timestamp在@google-cloud/firestore节点的npm模块的最新版本中根本不可用.您还可以看到它未包含在API文档中.也许它将在下一版本中添加@google-cloud/firestore.

  • 谢谢@Doug Stevenson.有什么想法吗?我希望FB在我的控制台中记录一条大红色消息说"请在启用新行为时审核Date的所有现有用法.在将来的版本中,行为将更改为新行为,因此如果您不遵循这些步骤,您的应用程序可能会突然爆发.",云/火库也希望实施这些更改. (3认同)
  • firebase客户端团队没有与管理团队沟通,这很疯狂.我和@MatthewMullin有同样的问题.大红色控制台警告,然后你转换所有内容只是为了发现管理员SDK仍然使用日期,所以所有代码共享都消失了.期待下一个发布:) (2认同)