【问题标题】:Firebase Cloud Function : Cloud Firestore query invalid eventhough data is in Cloud FirestoreFirebase Cloud Function:即使数据在 Cloud Firestore 中,Cloud Firestore 查询也无效
【发布时间】:2021-06-19 19:08:08
【问题描述】:

我有一个包含以下代码的云函数。我要求从我的 iOS 应用程序进行查询。即使数据在 Cloud Firestore 集合中,该函数仍会转到 else 语句,这意味着控制台打印“NOT IN COLLECTION”。有人可以帮忙吗?

云功能代码:

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)}
        
    }       
}

【问题讨论】:

    标签: javascript node.js swift google-cloud-firestore google-cloud-functions


    【解决方案1】:

    如果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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-05-28
      • 1970-01-01
      • 1970-01-01
      • 2018-05-05
      • 2020-10-19
      • 2021-11-26
      • 2020-08-23
      • 1970-01-01
      相关资源
      最近更新 更多