[英]Firebase Cloud Function : Cloud Firestore query invalid eventhough data is in Cloud Firestore
我有一個具有以下代碼的雲 function。 我要求從我的 iOS 應用程序中查詢。 即使數據在 Cloud Firestore 集合中,function 仍然是 go 到 else 語句,意思是控制台打印“NOT IN COLLECTION”。 有人可以幫忙嗎?
雲 function 代碼:
const functions = require("firebase-functions");
const admin = require("firebase-admin");
admin.initializeApp();
const db = admin.firestore();
const FieldValue = admin.firestore.FieldValue;
exports.validateShop = functions.https.onCall((data, context) => {
const uid = context.auth.uid;
console.log("Function called by UID: " + uid);
const email = context.auth.token.email;
console.log("Email: " + email);
const shop = data.shop;
console.log("Recieved: "+ data);
const docRef = db.collection("Users").where("shopName", "==", shop);
docRef.get().then(function(doc) {
if (doc.exists) {
const docDelete = db.collection("shops").doc(uid);
const updateDoc = docDelete.doc(uid).update({
"shopName": FieldValue.delete(),
});
console.log(shop + ": EXISTS. DOCUMENT UPDATED ");
return {success: true};
} else {
console.log(shop + ": NOT IN COLLECTION ");
return {success: false};
}
}).catch((error) => {
return {"shop": "Error getting document"};
});
return {
message: shop,
};
});
這就是我從我的 iOS 應用程序中調用它的方式:
func validateTurn(){
let data = ["shop": "ThaiSook"]
functions.httpsCallable("validateShop").call(data) { (result, error) in
print("Function returned")
if let err = error {print(err)}
if let res = result {print(res)}
}
}
如果docRef
引用的位置沒有文檔,則生成的文檔將為空,並且在其上調用exists
將返回 false。
除了仔細檢查您嘗試獲取的文檔是否存在之外,我建議您閱讀使用 Node.js [1] 從 Firestore 獲取文檔的示例。
您可以通過在代碼中使用關鍵字await
[2] 來解決您的問題。
[1] https://firebase.google.com/docs/firestore/query-data/get-data#get_a_document
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.