【问题标题】:Trying to implement a Cloud Function on firebase but get an error for undefined variable尝试在 firebase 上实现云功能,但未定义变量出现错误
【发布时间】:2020-06-28 10:38:37
【问题描述】:

我有以下功能,我已经在我的 firebase 项目中实现并部署到我的云功能,但在执行时,它会导致我在 firebase 控制台的功能日志中出现错误;

> TypeError: Cannot read property 'profileImgUrl' of undefined

我理解它产生的错误的含义,但我不明白为什么我的用户变量会未定义

下面是函数:

exports.eventInvites = functions.firestore
.document('Events/{eventId}').onCreate((snap, context) => {
  const eventData = snap.data();
  const eventId = context.params.eventId;
  const invitees = eventData.invitees;
  let user;
  db.doc(`Users/${eventData.createdBy}`).get().then(doc => {
    var data = doc.data();
    user = data; // updated user data but still get undefined
    return user;
  }).catch(error => {
    console.log(error.message);
  });
  if (invitees !== undefined || invitees.length > 0) {
    invitees.forEach(invitee => {
      db.collection('Users').doc(invitee).collection('feed').doc().set({
        date: new Date(),
        image: user.profileImgUrl, // error occurs here, says user is undefined
        summary: `${user.firstName} ${user.lastName} invited you to an event`,
        extraText: `${eventData.eventName}: ${eventData.eventDetails} `,
        extraImages: [
          eventData.eventImgUrl
        ]
      }).catch(error => {
        console.log(error.message)
      });
    });
  }
});

【问题讨论】:

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


    【解决方案1】:

    get() 是异步的,因此它之后的代码在之前被执行。为了解决这个问题,你可以把所有的代码放在get()里面:

    db.doc(`Users/${eventData.createdBy}`).get().then(doc => {
        var data = doc.data();
        user = data;
        if (invitees !== undefined || invitees.length > 0) {
          invitees.forEach(invitee => {
            db.collection('Users').doc(invitee).collection('feed').doc().set({
              date: new Date(),
              image: user.profileImgUrl,
              summary: `${user.firstName} ${user.lastName} invited you to an event`,
              extraText: `${eventData.eventName}: ${eventData.eventDetails} `,
              extraImages: [
                eventData.eventImgUrl
              ]
            })
          });
        }
        return user;
      }).catch(error => {
        console.log(error.message);
      });
    

    【讨论】:

      猜你喜欢
      • 2020-08-14
      • 1970-01-01
      • 2021-04-30
      • 2018-07-14
      • 2018-07-12
      • 1970-01-01
      • 2019-07-26
      • 2022-10-19
      • 1970-01-01
      相关资源
      最近更新 更多