Я получал ту же ошибку и вдохновлял делать все, что упоминалось здесь, а в другом месте ничего не работало. Оказалось, что я скопировал исходный код global.asax.cs из предыдущей версии проекта, у которого было другое имя. Таким образом, namespace Test
должен был быть namespace Test.WebUI
. Конечно, глупая ошибка, и я немного смущен, чтобы написать это! Но писать в надежде, что подобная ошибка от кого-либо еще может заставить его проверить этот тривиальный аспект.
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();
}
Посмотрите, как ответ отправляется только после данные сохранены.
Подробнее об асинхронном программировании в облачных функциях см. В документации . Также посмотрите этот видео сериал , в котором рассказывается о работе с обещаниями в облачных функциях.