Я создал вызываемую функцию из моего углового компонента.Мой угловой компонент вызывает функцию createUser
и успешно возвращает значение userRecord
.
Однако я хотел бы вызвать еще одну облачную функцию с именем createUserRecord
.Я не слишком знаком с обещаниями и тем, что нужно вернуть, где в этом конкретном сценарии.
Ниже приведены две мои облачные функции.Как бы мне позвонить createUserRecord
после успеха createUser
?
export const createUser = functions.https.onCall(async (data, context) => {
console.log('data = ', data);
return admin.auth().createUser({
email: data.email,
password: data.password,
}).then(function (userRecord) {
return userRecord
})
.catch(function (error) {
return error;
console.log('Error creating new user:', error);
});
});
export const createUserRecord = functions.auth.user().onCreate((user, context) => {
const userRef = db.doc(`users/${user.uid}`);
return userRef.set({
email: user.displayName,
createdAt: context.timestamp,
nickname: 'bubba',
})
});
Обновление
Это версия, которую я создал, где я объединил двафункционирует вместе.Это дает ожидаемый результат создания учетной записи, а затем записи в firestore.Тем не менее, он чувствует себя немного «выключенным» из-за того, что он не возвращает значение клиенту.
export const createUser = functions.https.onCall(async (data, context) => {
console.log('data = ', data);
return admin.auth().createUser({
email: data.email,
password: data.password,
}).then(function (userRecord) {
const userRef = db.doc(`users/${userRecord.uid}`);
return userRef.set({
email: data.email,
name: data.name,
})
})
.catch(function (error) {
return error;
console.log('Error creating new user:', error);
});
});
Функция углового вызова
Журнал консоли sanitizedMessage
вернет неопределенное значение.
addUser() {
const createUser = firebase.functions().httpsCallable('createUser');
const uniquePassword = this.afs.createId();
createUser({
email: this.userForm.value.email,
password: uniquePassword,
name: this.userForm.value.name,
}).then((result) => {
// Read result of the Cloud Function.
var sanitizedMessage = result.data.text;
console.log('sanitizedMessage = ', sanitizedMessage);
}).catch((error) => {
var code = error.code;
var message = error.message;
var details = error.details;
console.log('error = ', error);
});
}