管理员SDK无法设置Firestore的设置

时间:2018-07-20 11:12:56

标签: javascript firebase google-cloud-firestore google-cloud-functions google-admin-sdk

因此,我最近收到此警告:

  

Firestore中存储的Date对象的行为将改变   而且您的应用可能会崩溃。   要隐藏此警告并确保您的应用不会中断,您需要添加   在调用任何其他Cloud Firestore方法之前,将以下代码添加到您的应用中:

const firestore = new Firestore();
const settings = {/* your settings... */ timestampsInSnapshots: true};
firestore.settings(settings);
  

进行此更改后,将读取存储在Cloud Firestore中的时间戳记   作为Firebase Timestamp对象而不是作为系统Date对象返回。   因此,您还需要更新期望使用Date的代码   期待一个时间戳。例如:

// Old:
const date = snapshot.get('created_at');
// New:
const timestamp = snapshot.get('created_at');
const date = timestamp.toDate();
  

启用新功能后,请审核Date的所有现有用法   行为。在将来的版本中,行为将更改为新的   行为,因此,如果您不执行这些步骤,则您的应用可能会崩溃。

我正在尝试在我的Cloud Functions代码中的admin SDK中实施建议的更正,因为我所做的大部分事情都是通过该操作完成的。

我尝试使用admin.firestore().settings({ timestampsInSnapshots: true }),但收到以下警告:

  

admin.firestore(...)。settings不是功能

我该如何解决?

3 个答案:

答案 0 :(得分:13)

我有同样的问题。我必须更新firebase-functions和firebase-admin。

要升级,请转到您的CLI,然后

ProjectDirectory > Functions > npm install firebase-functions@latest firebase-admin@latest --save

然后,在顶部,在触发功能之前:

const firestore = admin.firestore();
const settings = {timestampsInSnapshots: true};
firestore.settings(settings);

答案 1 :(得分:6)

为防止“ Firestore.settings()已被调用”错误,请更改

db.settings(settings);

try{ db.settings(settings); }catch(e){}

答案 2 :(得分:0)

我解决了:

const settings = { timestampsInSnapshots: true };
const db = admin.firestore();
db.settings(settings);
db.collection('any');