如何使用 Firebase-admin 为 NodeJs 设置 timestampsInSnapshots 设置?
Posted
技术标签:
【中文标题】如何使用 Firebase-admin 为 NodeJs 设置 timestampsInSnapshots 设置?【英文标题】:How to set timestampsInSnapshots setting with firebase-admin for NodeJs? 【发布时间】:2018-11-20 18:43:50 【问题描述】:由于有关 Firestore 中时间戳行为即将发生变化的警告,我正在尝试更改我的应用的初始化代码。
存储在 Firestore 中的 Date 对象的行为将会改变 您的应用程序可能会中断。隐藏此警告并确保您的应用确实如此 不中断,您需要先将以下代码添加到您的应用程序中 调用任何其他 Cloud Firestore 方法:
const firestore = firebase.firestore(); const settings = / 你的 设置... / timestampsInSnapshots: true; firestore.settings(设置);
通过此更改,将读取存储在 Cloud Firestore 中的时间戳 返回为 Firebase Timestamp 对象,而不是系统 Date 对象。
不过,我找不到对 firestore“设置”的任何引用。像这样的东西会起作用吗? Typescript 定义说不...
import * as admin from "firebase-admin";
export const adminApp = admin.initializeApp();
const firestore = admin.firestore(adminApp);
firestore.settings( timestampsInSnapshots: true );
【问题讨论】:
"时间戳在管理 SDK 中尚不存在。他们正在处理它。" ~ @codingdoug(在 Firebase Slack 上) 那为什么会出现警告呢? 出现警告是因为我还在后端代码中使用了客户端库。总的来说,我认为如果您在前端/客户端应用程序中看到此警告,您会认为这也与后端相关。 【参考方案1】:我已将 firebase-admin 升级到 5.13.0,并在 initializeApp() 之后在我的 index.js 中使用以下 node.js 代码,该警告消失了,之后我的代码可以正常运行。
admin.initializeApp();
const settings = /* your settings... */ timestampsInSnapshots: true;
admin.firestore().settings(settings);
【讨论】:
谢谢。我可以确认使用更新版本现在可以使用。 Typescript 还允许 API 来自其 typedef。 如何升级 firebase-admin? @JeffPadgettnpm install --save firebase-admin@latest
如果您使用initializeApp
的结果(例如const app = admin.initializeApp(/* ... */);
),您可以使用其结果(例如app.firestore().settings(setting)
)编写设置。 firebase.google.com/docs/reference/admin/node/admin.app.App
应用设置会使生成的 db
变为 void 而不是 Firestore
类型。这是预期的行为吗?以上是关于如何使用 Firebase-admin 为 NodeJs 设置 timestampsInSnapshots 设置?的主要内容,如果未能解决你的问题,请参考以下文章
如何忽略“firebase-admin 似乎已安装在不受支持的环境中。”?
如何使用 Typescript 从 firebase-admin 导入 FieldValue?
导出 Firestore 备份数据的云功能。使用 firebase-admin 或 @google-cloud/firestore?
Firebase 的云功能 - 即使我正在为 firebase-admin 功能发出出站 http 请求,也会出现网络错误