【问题标题】:Firebase Functions saying something undefined when it is notFirebase 函数在未定义时说出未定义的内容
【发布时间】:2021-08-13 04:15:54
【问题描述】:

从 firebase 函数中获取以下错误。我不明白registrationList是如何未定义的。

错误:Update() 需要单个 JavaScript 对象或字段/值对的交替列表,可以后跟可选的前置条件。参数“dataOrField”的值不是有效的 Firestore 值。不能将“未定义”用作 Firestore 值(在字段“registrationList.0”中找到)。如果您想忽略未定义的值,请启用ignoreUndefinedProperties

 let curRegister = 0;
                // Take inventory down
                if (typeof eventInfo.currentRegister !== "undefined") {
                  curRegister = parseInt(eventInfo.currentRegister) + 1;
                  console.log("KBKBKBBK: " + curRegister);
                } else {
                  curRegister = 1;
                }
                let regList = [];
                // Add the user to the event registration table
                if (typeof eventInfo.registrationList !== "undefined") {
                  regList = eventInfo.registrationList;
                  regList.push(purchaser.id);
                } else {
                  regList = [purchaser.id];
                }
                //update event doc
                admin
                  .firestore()
                  .collection("events")
                  .doc(eventID)
                  .update({
                    registrationList: regList,
                    currentRegister: curRegister,
                  });
                let eventsAttend = [];
                if (typeof purchaser.eventsAttended !== "undefined") {
                  eventsAttend = purchaser.eventsAttended;
                  eventsAttend.push(eventID);
                } else {
                  eventsAttend = [eventID];
                }
                admin
                  .firestore()
                  .collection("fclUsers")
                  .doc(userDocId)
                  .update({ eventsAttended: eventsAttend });

【问题讨论】:

  • 这个错误消息出错是很不寻常的。你可能想console.log(JSON.stringify(regList)) 来验证它的内容。

标签: javascript firebase google-cloud-firestore


【解决方案1】:

错误表明数组中的第一项未定义regList[0],如果您的数组为空,则可能发生这种情况。

您应该在将数据推送到 Firebase 之前对其进行健康检查。

  • Array.isArray(eventInfo.registrationList)检查它的类型
  • 使用regList.filter(Boolean) 过滤掉 null 和空项
  • 检查它的数组长度以检查它的当前内容计数regList.length > 0

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-12-20
    • 1970-01-01
    • 2021-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-15
    • 1970-01-01
    相关资源
    最近更新 更多