添加“修复”后,Firestore Cloud Function仍会警告我有关日期和时间戳的信息

时间:2019-04-12 06:25:34

标签: firebase google-cloud-firestore google-cloud-functions

我正在使用Typescript编写云函数,但是我认为Javascript应该是同样的问题。

我得到了和每个人相同的警告:

  

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

     

const firestore = new Firestore(); const设置= {/ *您的   设置... * / timestampsInSnapshots:true};
  firestore.settings(settings);

     

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

     

//旧:const date = snapshot.get('created_at'); //新增:const   时间戳= snapshot.get('created_at'); const date =   timestamp.toDate();

     

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

因此,我在stackoverflow上找到了答案,但没有一个真正起作用。 我基本上在我的代码中在index.ts的顶部(导入后)添加了以下内容:

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

然后,我将功能部署在firebase上。一切都好!

调用触发器时出现问题。例如创建通知时:

export const onNotificationCreate = functions.firestore.document('notifications/{notificationsID}').onCreate(async notification => { }

我用来构建通知对象的接口是:

export interface Notification {
    created: any,
    type: NotificationType,
    content: {
        post?: DocumentReference,
        comment?: DocumentReference
    }
    emitters: DocumentReference[],
    owner: DocumentReference
}

并且为了构建该对象,我从数据存储区获取了日期。

export const onPostCommentCreate = functions.firestore.document('blogpost/{blogpostID}/comments/{commentID}').onCreate(async (comment, context) => {
    const commentData = comment.data()
    const commentDate = commentData['created']

您知道为什么我在Firestore云功能日志中仍然有警告吗?

谢谢。

0 个答案:

没有答案