मैं एक उपयोगिता फ़ंक्शन बनाना चाहता हूं जो एक संग्रह में एक फायरस्टोर दस्तावेज़ मौजूद है या नहीं, इस पर निर्भर करता है कि true या false देता है।

नीचे मैंने मूल रूप से लिखा है, लेकिन यह एक बूलियन के बजाय एक वादा देता है।

async function docExists(docName, docId) {
  const docRef = db.collection(docName).doc(docId);

  await docRef.get().then((docSnapshot) => {
    if (docSnapshot.exists) {
      return true
    } else {
      return false
    }
  });
}

क्या इसके लिए एक बुलियन वापस करने का कोई तरीका है, या यह समस्या से संपर्क करने का गलत तरीका है?

2
jl98 2 सितंबर 2021, 19:05

2 जवाब

सबसे बढ़िया उत्तर

आपके प्रश्न में await और .then सिंटैक्स को मिलाने की कोई आवश्यकता नहीं है। यह पर्याप्त होना चाहिए:

async function docExists(docName, docId) {
  const docRef = db.collection(docName).doc(docId);

  let docSnapshot = await docRef.get();
  
  if (docSnapshot.exists) {
    return true;
  } else {
    return false;
  }
}

वैकल्पिक रूप से, वादा श्रृखंला के उपयोग के माध्यम से , आप अपने प्रश्न में मूल await docRef.get().then(...) से पहले केवल return कीवर्ड जोड़ सकते हैं।

2
David Callanan 4 सितंबर 2021, 19:08

उसके लिए एक साधारण एक लाइनर हो सकता है:

const docExists = async (docName, docId) => (await db.collection(docName).doc(docId).get()).exists
0
Dharmaraj 2 सितंबर 2021, 16:21