Облачные функции для Firebase Не удалось обработать запрос после успешного запроса

Я получал ту же ошибку и вдохновлял делать все, что упоминалось здесь, а в другом месте ничего не работало. Оказалось, что я скопировал исходный код global.asax.cs из предыдущей версии проекта, у которого было другое имя. Таким образом, namespace Test должен был быть namespace Test.WebUI. Конечно, глупая ошибка, и я немного смущен, чтобы написать это! Но писать в надежде, что подобная ошибка от кого-либо еще может заставить его проверить этот тривиальный аспект.

0
задан Laszlo 15 January 2019 в 16:35
поделиться

1 ответ

saveMyDoc не возвращает обещание, которое разрешается, когда вся асинхронная работа завершена. Если вы потеряете обещание, Cloud Functions остановит работу и произведет очистку до ее завершения, создавая впечатление, что она просто не работает. Вы должны отправлять ответ от функции типа HTTP только после , когда вся работа полностью завершена.

Как минимум, это должно выглядеть примерно так:

module.exports.saveMyDoc = function (myDoc) {
    let newDoc = db.collection('insertedDocs').doc(new Date().toISOString());
    return newDoc.set(myDoc);
};

Тогда вы будете использовать обещание в своей основной функции:

myDbFuncs.saveMyDoc(doc).then(() => {
    res.status(201).send("OK").end();
}

Посмотрите, как ответ отправляется только после данные сохранены.

Подробнее об асинхронном программировании в облачных функциях см. В документации . Также посмотрите этот видео сериал , в котором рассказывается о работе с обещаниями в облачных функциях.

0
ответ дан Doug Stevenson 15 January 2019 в 16:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: