У меня есть следующая функция, и я хочу сделать условный снимок внутри снимка, а затем выполнить некоторые действия, Текущая проблема заключается в том, что я вижу первый console.info в журналах, но функция по какой-то причине не переходит к моментальному снимку. Как лучше всего получить данные внутри облачной функции? на случай, если вы не хотите отправлять их в качестве ответа?
export const deleteClient = functions.https.onCall((data, context) => {
console.info(context.auth?.uid, data.clientAccountId, ':::::::::::::ID1 + ID2:::::::::::::');
db.collection('ClientsData')
.doc(data.clientAccountId)
.get()
.then((snapshot) => {
console.info(context.auth?.uid, data.clientAccountId, ':::::::::::::snapshot.data()?.sharedId:::::::::::::');
if (context.auth?.uid! === snapshot.data()?.sharedId) {
admin
.auth()
.deleteUser(data.clientAccountId)
.then(() => {
console.info('Successfully deleted user');
})
.catch((error: any) => {
console.info('Error deleting user:', error);
});
db.collection('ClientsData').doc(data.clientAccountId).delete();
}
})
.catch((err) => {});
});




Если вы не хотите ничего возвращать из функции, вы можете просто вернуть null. Также вы должны регистрировать любые ошибки в блоке catch, чтобы вы знали, если что-то не так. Попробуйте реорганизовать код, используя синтаксис async-await, как показано ниже:
export const deleteClient = functions.https.onCall(async (data, context) => {
try {
console.info(context.auth?.uid, data.clientAccountId, ':::::::::::::ID1 + ID2:::::::::::::');
const snapshot = await db.collection('ClientsData').doc(data.clientAccountId).get()
console.info(context.auth?.uid, data.clientAccountId, ':::::::::::::snapshot.data()?.sharedId:::::::::::::');
if (context.auth?.uid! === snapshot.data()?.sharedId) {
await Promise.all([
admin.auth().deleteUser(data.clientAccountId),
db.collection('ClientsData').doc(data.clientAccountId).delete()
]);
}
} catch (e) {
console.info(e)
}
return null;
});