# #javascript #firebase #google-cloud-firestore
Вопрос:
Получаю следующую ошибку от функций firebase. Я не понимаю, как список регистрации не определен.
Ошибка: Для обновления() требуется либо один объект JavaScript, либо чередующийся список пар поле/значение, за которыми может следовать необязательное предварительное условие. Значение для аргумента «dataOrField» не является допустимым значением Firestore. Нельзя использовать «неопределенный» в качестве значения Firestore (найдено в поле «
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 });
Комментарии:
1. Довольно необычно, чтобы это сообщение об ошибке было неправильным. Возможно, вам захочется
console.log(JSON.stringify(regList))
проверить его содержимое.
Ответ №1:
Ошибка заключается в том , что первый элемент внутри массива не определен regList[0]
, это может произойти, если ваш массив пуст.
Вы должны проверить свои данные на работоспособность, прежде чем отправлять их в Firebase.
- проверьте его тип с помощью
Array.isArray(eventInfo.registrationList)
- Отфильтруйте пустые и пустые элементы с помощью
regList.filter(Boolean)
- проверьте длину массива, чтобы проверить количество текущего содержимого
regList.length > 0