javascript - Google Firebase त्रुटि(फ़ंक्शन अपरिभाषित, अपेक्षित वादा या मान लौटाया गया)




node.js firebase-realtime-database (2)

मैं Firebase के साथ सर्वर विकसित कर रहा हूं।

मैंने Youtube पर Google Developer का वीडियो कॉपी किया था।

यह अच्छी तरह से काम करता है, लेकिन लॉग पर एक त्रुटि है:

फ़ंक्शन अपरिभाषित, अपेक्षित वादा या मान लौटाया गया

यह कहता है कि फ़ंक्शन undefined लौटा है, लेकिन मैं function एक promise `सेट`` लौटाता हूं

इसे कैसे हल किया जा सकता है?

function sanitize(s) {
    var sanitizedText = s;
    console.log('sanitize params: ', sanitizedText);
    sanitizedText = sanitizedText.replace(/\bstupid\b/ig, "wonderful");
    return sanitizedText;
}
exports.sanitizePost = functions.database
    .ref('/posts/{pushId}')
    .onWrite(event => {
        const post = event.data.val();
        if (post.sanitized) return;

        console.log('Sanitizing new post', event.params.pushId);
        console.log(post);
        post.sanitized = true;
        post.title = sanitize(post.title);
        post.body = sanitize(post.body);
        return event.data.ref.set(post); 
    })

मैं फायरबेस, नॉडज की शुरुआत कर रहा हूं।


जैसा कि फ्रैंक आपकी पोस्ट पर अपनी टिप्पणी में इंगित करता है, चेतावनी देने वाला रिटर्न स्टेटमेंट यह है:

if (post.sanitized) return;

डमी मूल्य (जैसे शून्य, असत्य, 0) लौटाकर चेतावनी को शांत किया जा सकता है। मान का उपयोग नहीं किया जाता है।

क्लाउड फ़ंक्शंस के पहले के संस्करणों ने शिकायत नहीं की जब कोई फ़ंक्शन बिना विवरण के रिटर्न स्टेटमेंट का उपयोग करके बाहर निकलता है। यह बताता है कि आप return; क्यों देखते return; आपके द्वारा लिंक किए गए और firebase.google.com/docs/functions/terminate-functions में वीडियो में। फायरबेकर फ्रैंक वैन प्यूफिलीन के सवाल पर टिप्पणी बताती है कि बदलाव क्यों किया गया।

जैसा कि फ्रैंक ने सुझाव दिया है कि चेतावनी को समाप्त करने का सबसे सरल तरीका एक वापसी मूल्य जोड़ना है:

if (post.sanitized) return 0;

एक अन्य विकल्प onWrite() से onWrite() में ट्रिगर को बदलना है। तब फ़ंक्शन को तब लागू नहीं किया जाएगा जब पोस्ट को सैनिटाइज़ किया जाता है और चेक जो चेतावनी उत्पन्न करता है, उसकी आवश्यकता नहीं है:

exports.sanitizePost = functions.database
    .ref('/test/{pushId}')
    .onCreate(event => {  // <= changed from onWrite()
        const post = event.data.val();
        //if (post.sanitized) return; // <= no longer needed

        console.log('Sanitizing new post', event.params.pushId);
        console.log(post);
        //post.sanitized = true; // <= not needed when trigger is onCreate()
        post.title = sanitize(post.title);
        post.body = sanitize(post.body);
        return event.data.ref.set(post);
    });

मैं एक ही त्रुटि का उपयोग कर एक दस्तावेज़ को पढ़ने के प्रयास के लिए यह त्रुटि प्राप्त कर रहा था .get() जो एक वादा लौटाता है।

मुझे आधिकारिक फायरबेस यूट्यूब ट्यूटोरियल में पता चला कि इस त्रुटि को हल करने के लिए, मुझे कोड की वादा लाइन को वापस करने की आवश्यकता है। ट्यूटोरियल जुड़ा वीडियो [ https://youtu.be/d9GrysWH1Lc] में मिनट 4:18 की जांच करें

इसके अलावा, एक साइड नोट के रूप में, मुझे ट्यूटोरियल समाधान में क्या होता है जब मैंने देखा कि फ़ंक्शन लॉग में वास्तव में वैध मान लॉग किए थे, लेकिन फ़ंक्शन बंद होने के बाद भी, हालांकि त्रुटि का कहना है कि परिणाम अपरिभाषित था।





google-cloud-functions