Во-первых, заранее спасибо, что нашли время прочитать это.
Я работал над облачной функцией для моего приложения Firebase и столкнулся с некоторыми неприятными ситуациями.В половине случаев моя функция работает как положено;Я вижу все ожидаемые журналы, и БД обновляется правильно.Другая половина времени, кажется, почти останавливается на полпути;отображаются только некоторые журналы, и производится только половина ожидаемых обновлений БД.Я отлаживал это довольно давно и у меня заканчиваются идеи.
Одна вещь, которую я постоянно вижу в журналах, - это следующая ошибка:
Function returned undefined, expected Promise or value
IЯ не уверен, является ли эта ошибка причиной несоответствий, отмеченных выше, но это единственное преимущество, которое у меня есть на данный момент.К этому моменту я закомментировал почти весь код моей облачной функции, и ошибка, по-видимому, вызвана использованием функции async.auto
.Как только я удалю любую ссылку на async
, ошибка исчезнет.
Подводя итог моим вопросам: 1 - Почему использование async.auto
вызывает вышеуказанную ошибку?2 - Является ли ошибка причиной несоответствия с результатом запуска моей облачной функции?
Для справки, вот моя чрезмерно упрощенная и бессмысленная функция, которая выдает вышеуказанную ошибку:
exports.updateLeaderboard = functions.database.ref('/contests/{dateString}/ladder/dayIsComplete').onWrite((event, context) => {
const isComplete = event.after._data,
contestType = 'ladder',
dateString = context.params.dateString;
if (isComplete !== true) {
console.warn(`${contestType} for ${dateString} is not yet complete.`);
return false;
}
async.auto({
fetchWinningPicks: cb => {
return cb();
},
// ... Other stuff that I've now commented out
}, err => {
if (err) {
return false;
} else {
return true;
}
});
};