云功能触发两次

时间:2018-04-22 20:27:46

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

我遇到云功能问题。

我正在预订系统。 当管理员接受预订时,我会在客户端进行此呼叫:

reservationRef.update({
  handled: true,
  lastHandledBy: AUTH.currentUser.uid,
  timestamp: TIMESTAMP
})

以下是整个预订的样子:

roomId: number
address: string
name: string
tel: string
message: string
email: string
from: number
to: number
timestamp: date
lastHandledBy: string
handled: boolean
adults: number
children: number

在Cloud Functions中,我有一个在更新预订时触发的功能,因此我可以向用户发送确认电子邮件。它看起来像这样:

exports.reservationChanged = reservationRef
       .onUpdate(({before, after}, {params: {reservationId}}) => {
         before = before.data()
         after = after.data()
         // Reservation accepted
         if (!before.handled && after.handled) {
           return email.reservationAccepted(reservationId, after)
         }
       }

出于某种原因,它会被触发两次并发送两封电子邮件,我不知道为什么。我使用简单的.update()

更新预订

我做错了什么?

由于

1 个答案:

答案 0 :(得分:0)

问题解决了。我忘了部署我的新代码了。在旧版本中,我在客户端上使用了2个.set()方法而不是一个.update()来更新预留,从而在云函数中导致单独的.onUpdate触发。