我有一个云函数,当从客户端应用程序调用用户输入时,它会更新用户输入。我希望该函数返回 true/false 以便在客户端应用程序中执行进一步操作。例如,如果云函数返回 true,则新屏幕切换。否则,显示警报。但问题是,我如何修改我的代码以从云函数返回真/假并在 iOS 应用程序中读取它?有人可以帮忙吗?
这是我的云函数代码(如果从这里成功,如何返回 true):
exports.updateUserDetails = functions.https.onCall((data, context) => {
const uid = context.auth.uid;
console.log("UID: " + uid);
const phoneNo = data.phoneNo;
console.log("Recieved: "+ phoneNo);
const docRef = db.collection("Users").doc(uid);
const code = docRef.set({
"phoneNo": numberID,
"dateUpdated": timeStamp,
}, {merge: true});
console.log("Phone Number updated");
return {
message: phoneNo,
};
});
这是来自iOS应用程序的代码(如何读取结果以进行进一步操作);
func updateUser(){
let data = ["phoneNo":"0125949022"]
functions.httpsCallable("updateUserDetails").call(data) { (result, error) in
print("Function returned")
if let err = error {print(err)}
if let res = result {print(res)}
}
}
您所要做的就是创建一个等待异步 Firestore 操作完成的then()
,因此将其应用于您的代码可以执行以下操作:
const docRef = db.collection("Users").doc(uid);
docRef.set({
"phoneNo": numberID,
"dateUpdated": timeStamp,
}, {merge: true})
.then((docRef) => {
console.log("Phone Number updated");
return {success: true};
})
.catch((error) => {
console.error("Error adding document: ", error);
return {success: false};
});