Операторы return не делают того, что вы ожидаете. Они просто возвращают значение из лямбда-функции, которое вы передали в then
и catch
. Они не возвращают значение из более крупной функции, которую вы передали в onCall
.
Вызываемые функции требуют, чтобы вы возвращали обещание, которое разрешается с объектом, который вы хотите отправить клиенту. Прямо сейчас функция, переданная в onCall
, всегда ничего не возвращает. Что вам нужно сделать, так это вернуть всю цепочку обещаний:
return admin.firestore().collection('users').doc(data.id).update({
streamID: '98273498237'
}).then(() => {
console.log('update success')
return {data: 'update successful'}
}).catch(error => {
console.log('error message: ', error)
return {data: 'there was an issue updating document'}
});
Все, что я добавил, - это возврат в начале первой строки.
Понимание того, как работают JavaScript обещания имеет решающее значение для написания эффективных функций. Я настоятельно рекомендую потратить некоторое время на то, чтобы изучить их обычные паттерны.