簡體   English   中英

Firebase Cloud Function:Cloud Firestore 查詢無效,即使數據在 Cloud Firestore 中

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

[2] https://javascript.info/async-await

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM