मैं एक फायरबेस फ़ंक्शन (ऐप के लिए एक अधिसूचना) को तैनात करने की कोशिश कर रहा हूं जो किसी तीसरे पक्ष की वेबसाइट से मूल्य प्राप्त करता है। लेकिन, जब मैं जेसन को कॉल करता हूं, तो यह कहता है कि त्रुटि लॉग में वह मान मौजूद नहीं है। क्या इसका कोई स्पष्ट समाधान है?

फॉलो अप संपादित करें: मैं शीर्षक में दिखाए जाने के लिए फ़ेच विधि में डेटा कैसे प्राप्त करूं?

 const url = new URL(
        "test.com"
    );
    let params = {
        "value": "title",
    };
    Object.keys(params)
        .forEach(key => url.searchParams.append(key, params[key]));

    fetch(url, {
        method: 'GET',
      })
      //This is where you usually would log the data .then(json => console.log(json));

      const payload = {
              notification: {
              title: json,
              body:  'The current events for today have been updated.',
              badge: '0',
              sound: 'default',
          }
      };
0
Chase Smith 16 मार्च 2020, 22:03
json परिभाषित नहीं है।
 – 
VLAZ
16 मार्च 2020, 22:04
इससे जेसन डेटा प्राप्त करने का सही तरीका क्या है?
 – 
Chase Smith
16 मार्च 2020, 22:05
मुझे नहीं पता। यहाँ क्या इरादा है? क्या आप उम्मीद करते हैं कि json का कुछ मूल्य होगा? क्या आप केवल "json" स्ट्रिंग पास करना चाहते हैं?
 – 
VLAZ
16 मार्च 2020, 22:07

2 जवाब

अगर मैं समझता हूं कि आप वास्तव में क्या करना चाहते हैं, तो आप fetch अनुरोध की .then() विधि को याद कर रहे हैं। कुछ इस तरह:

fetch(url, {
    method: 'GET'    // You also had a wrong comma here
}).then(json => {
    // In here, json will contain the response from the fetch,
    // so you can use it however you prefer

    const payload = {
        notification: {
        title: json,
        body:  'The current events for today have been updated.',
        badge: '0',
        sound: 'default',
    }

    // do anything else

});
1
Aioros 16 मार्च 2020, 22:35
यह अच्छा लग रहा है, लेकिन यह मुझे त्रुटि npm ERR दे रहा है! जब मैं कोशिश करता हूं और इसे तैनात करता हूं तो @ लिंट स्क्रिप्ट के कार्यों में विफल रहा।
 – 
Chase Smith
16 मार्च 2020, 22:29
अभी संपादित किया गया, मुझे लगता है कि यह आपके स्निपेट से 'GET' के बाद अल्पविराम था।
 – 
Aioros
16 मार्च 2020, 22:35
धन्यवाद! अब मुझे एक अलग त्रुटि मिल रही है: त्रुटि पार्सिंग त्रुटि: अनपेक्षित टोकन, और npm ERR! कोड ELIFECYCLE
 – 
Chase Smith
16 मार्च 2020, 22:37
ठीक है, मैं केवल अनुभव से उन लोगों पर अनुमान लगा सकता हूं: अप्रत्याशित टोकन शायद आपकी स्क्रिप्ट के कुछ हिस्से से किसी ऑब्जेक्ट में JSON स्ट्रिंग को पार्स करने का प्रयास कर रहा है लेकिन वास्तव में वैध JSON प्राप्त नहीं कर रहा है, और ELIFECYCLE लगभग कुछ भी हो सकता है, शायद एक अप्रबंधित अपवाद एक async विधि में। ऐसा कुछ नहीं जो हम आपके प्रश्न से देख सकें, मुझे डर है।
 – 
Aioros
16 मार्च 2020, 23:34

आपको payload वैरिएबल को अपडेट करना चाहिए। title के मान के रूप में json नामक कोई चर नहीं है। आपका payload होना चाहिए

const payload = {
      notification: {
      title: 'json', // <-- mark here
      body:  'The current events for today have been updated.',
      badge: '0',
      sound: 'default',
   }
};

अपडेट: मैंने प्रश्न को गलत समझा। मुझे लगता है कि आप ऐसा कुछ चाहते हैं-

    const url = new URL(
            "test.com"
        );
        let params = {
            "value": "title",
        };
        Object.keys(params)
            .forEach(key => url.searchParams.append(key, params[key]));

        const payload = {
                  notification: {
                  title: '',
                  body:  'The current events for today have been updated.',
                  badge: '0',
                  sound: 'default',
              }
          };

        fetch(url, {
            method: 'GET',
        }).then(res => res.json())
          .then(data => {
               payload.title = data.title; // Or something like that.
          });
0
Sajeeb Ahamed 16 मार्च 2020, 22:30
ठीक-- लेकिन मैं इसे वहां कैसे बुलाऊं? यही मेरा सवाल है।
 – 
Chase Smith
16 मार्च 2020, 22:21
वहां क्या कॉल करें? क्या होना चाहिए?
 – 
VLAZ
16 मार्च 2020, 22:22
मैं सिर्फ शीर्षक में दिखाए जाने के लिए लाने की विधि में डेटा पसंद करूंगा।
 – 
Chase Smith
16 मार्च 2020, 22:23
ऐसा करने के लिए आपको .then या async/await का उपयोग करना होगा।
 – 
VLAZ
16 मार्च 2020, 22:24
त्रुटि प्राप्त करना 'एनपीएम ईआरआर! कोड ELIFECYCLE' इस से
 – 
Chase Smith
16 मार्च 2020, 22:42