因此,我最近收到此警告:
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不是功能
我该如何解决?
答案 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');