[英]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.