firebase - Google क्लाउड फ़ंक्शंस-चेतावनी नेस्टिंग वादों से बचें वादे/नो-नेस्टिंग



firebase-realtime-database google-cloud-functions (1)

निम्नलिखित कार्य को देखते हुए मुझे चेतावनी मिलती है:

चेतावनी घोंसले के शिकार वादे से बचें / नो-नेस्टिंग (पंक्ति 6)

मुझे चेतावनी को ठीक करने के लिए फ़ंक्शन को फिर से कैसे करना चाहिए?

function FindNearbyJobs(uid, lat, lng){
  return admin.database().ref(`users/${uid}/nearbyjobs`).remove().then(data => {
    return new Promise((resolve, reject) => {
      const geoQueryJobs = geoFireJobs.query({center: [lat, lng], radius: 3 });
      geoQueryJobs.on("key_entered", (key, location, distance) => {
        return Promise.all([admin.database().ref(`jobs/${key}/category`).once('value'), admin.database().ref(`users/${uid}/account/c`).once('value')]).then(r => {
          const cP = r[0];
          const cO = r[1];
          if (cO.val().includes(cP.val())){
            return admin.database().ref(`users/${uid}/nearbyjobs/${key}`).set({ d: distance });
          }else{
            return null;
          }
        });
      });
      geoQueryJobs.on("ready", () => {
        resolve();
      });
    });
  });
}

then() आपके पास एक वादा है then() दूसरे वादे के अंदर नेस्टेड कॉल करें then() । यह खराब शैली माना जाता है, और आपके कोड को पढ़ना मुश्किल बनाता है। यदि आपके पास प्रदर्शन करने के लिए काम का एक क्रम है, तो अपने काम को एक के बाद एक घोंसले के बजाय एक के बाद एक करना बेहतर है। इसलिए, इस तरह से नेस्टिंग करने के बजाय:

doSomeWork()
.then(results1 => {
    return doMoreWork()
    .then(results2 => {
        return doFinalWork()
    })
})

इस तरह काम को अनुक्रम:

doSomeWork
.then(results => {
    return doMoreWork()
})
.then(results => {
    return doFinalWork()
})

उस त्रुटि संदेश को खोजना भी इस सहायक चर्चा को जन्म देता है





google-cloud-functions