У меня есть облачная функция Firebase, которая вызывается в моем приложении с помощью JavaScript.Когда функция вызывается, она выбирает пользовательские данные из идентификатора пользователя, а затем извлекает запись из базы данных в реальном времени для проверки на совпадение.
Эта функция работает, но возвращает «ноль» и завершает работу раньше, чем возвращаетсообщение об успехе или ошибке при обнаружении совпадения.
Как сделать так, чтобы возвращаемый текст соответствовал успеху или ошибке совпадения и завершился только после того, как было решено совпадение?
exports.matchNumber = functions.https.onCall((data, context) => {
// ID String passed from the client.
const ID = data.ID;
const uid = context.auth.uid;
//Get user data
admin.auth().getUser(uid)
.then(function(userRecord) {
// Get a database reference to our posts
var db = admin.database();
var ref = db.ref("path/to/data/" + ID);
return ref.on("value", function(snapshot) {
//Fetch current phone number
var phoneORStr = (snapshot.val() && snapshot.val().phone) || "";
//Fetch the current auth user phone number
var userAuthPhoneNumber = userRecord.toJSON().phoneNumber;
//Check if they match
if (userAuthPhoneNumber === phoneORStr) {
console.log("Phone numbers match");
var updateRef = db.ref("path/to/data/" + ID);
updateRef.update({
"userID": uid
});
return {text: "Success"};
} else {
console.log("Phone numbers DO NOT match");
return {text: "Phone number does not match the one on record."};
}
}, function (errorObject) {
console.log("The read failed: " + errorObject.code);
return {text: "Error fetching current data."};
});
})
.catch(function(error) {
console.log('Error fetching user data:', error);
return {text: "Error fetching data for authenticated user."};
});
});
Спасибо