Непонятно, что происходит не так, но, по крайней мере, отчасти это связано с тем, что вы не проверяете, в чем может быть ошибка при выполнении записи в коллекцию / документ.
Это составленопо вашему ответу «Пользователь был вставлен» отправляется без фактического подтверждения того, что документ пользователя был установлен.Нет даже гарантии, что она была отправлена к моменту завершения функции, потому что вы не рассматриваете запись документа как асинхронную.
Обычный способ сделать это - вернуть Обещание, set()
возвращает, поэтому handleRequest()
будет ждать завершения обработчика, прежде чем отправит ответ.Вы также должны установить ответ в части then()
Обещания и перехватить все ошибки в блоке catch()
.
Функция, подобная этой, является более правильной и может регистрировать, что это за ошибка:
function getUserDetails(agent)
{
name= agent.parameters.name;
location=agent.parameters.location;
console.log("buyer name is " + name);
return db.collection("Users").doc("101").set({
name: name,
location: location
})
.then( () => {
agent.add(`User has been inserted`);
})
.catch( err => {
console.log( err );
agent.add('Something went wrong');
});
}