2 回答

TA貢獻1796條經驗 獲得超10個贊
對于可調用類型函數,必須返回一個 promise,該 promise 生成要發送回調用它的客戶端應用的對象值。只有當所有異步工作完成時,該承諾才必須解析,否則函數將在工作完成之前關閉。
現在,您的函數不返回任何內容,并且忽略了?updateUser()?返回的 promise。Cloud Functions 在工作完成之前終止該函數:承諾被忽略。您的代碼應改用該 promise 并將結果發送回客戶端。這將發送一個空對象,但您可以在其中執行任何您想要的事情:
????return?admin.auth().updateUser(docId,?{?password:?newPass?}) ????.then(()?=>?{? ???????????return?{};??//?this?is?what?gets?sent?back?to?the?app ????});

TA貢獻1815條經驗 獲得超13個贊
我做了更多的研究并編輯了我的代碼。這工作原理:
resetForm.addEventListener('submit', (e) => {
console.log("Step 1");
e.preventDefault();
let newPass = resetForm['reset-password'].value;
const resetPasswordFunction = firebase.functions().httpsCallable('resetPassword');
resetPasswordFunction({docId: docId, newPass: newPass}).then(() => {
const modal = document.querySelector('#modal-reset');
M.Modal.getInstance(modal).close();
resetForm.reset();
});
console.log("Step 1.5");
});
.
var functions = require('firebase-functions');
var admin = require("firebase-admin");
var serviceAccount = require("./troop-30-elections-web-app-firebase-adminsdk-obsmr-6913a9dca3.json");
admin.initializeApp({
credential: admin.credential.cert(serviceAccount),
databaseURL: "https://troop-30-elections-web-app.firebaseio.com"
});
exports.resetPassword = functions.https.onCall((data) => {
return admin.auth().updateUser(data.docId, {
password: data.newPass
})
.then(() => {
return {"text": "User Password Successfully Updated"}; // this is what gets sent back to the app
});
});
添加回答
舉報