【问题标题】:How to set timestampsInSnapshots setting with firebase-admin for NodeJs?如何使用 Firebase-admin 为 NodeJs 设置 timestampsInSnapshots 设置?
【发布时间】: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 上)
  • 那为什么会出现警告呢?
  • 出现警告是因为我还在后端代码中使用了客户端库。总的来说,我认为如果您在前端/客户端应用程序中看到此警告,您会认为这也与后端相关。

标签: node.js firebase google-cloud-firestore


【解决方案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?
  • @JeffPadgett npm 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 类型。这是预期的行为吗?
猜你喜欢
  • 2019-07-04
  • 1970-01-01
  • 1970-01-01
  • 2018-08-16
  • 2020-11-26
  • 1970-01-01
  • 1970-01-01
  • 2018-06-10
  • 1970-01-01
相关资源
最近更新 更多