Согласно документам, которые я прочитал, функция onCall должна возвращать обещание. Примерно так:
...onCall((data, context) => {
return db.collection('game').doc(game_id).delete();
});
...
Это просто берет обещание, связанное с функцией delete
, и возвращает его вызывающей стороне.
Однако, если я хочу сделать дополнительный шаг после удаления то есть несколько путей возврата, и мне не ясно, что возвращать:
...onCall((data, context) => {
return db.collection('game').doc(game_id).delete()
.then(){
return db.collection('user').doc(user_id).delete()
}
//.catch(){ return ??? }
});
...
Я видел код, похожий на тот, что я набрал выше, но мне не ясно, что это правильно. Во-первых, означает ли это, что, возвращая обещание удаления игры, если есть ошибка, она будет возвращена пользователю, а в случае успеха обещание удаления пользователя будет возвращено пользователю? Что если есть исключение для удаления пользователя?
Нужно ли мне создавать свой собственный объект Promise
и сам вызывать resolve
или reject
?