फायरस्टार onUpdate फ़ंक्शन ट्रिगर नहीं करता है
समस्या
मैं एमुलेटर के साथ फायरबेस क्लाउड फ़ंक्शन का उपयोग कर रहा हूं, और किसी कारण से, onUpdate
ट्रिगर ट्रिगर नहीं हो रहा है, फिर भी onCreate
फ़ंक्शन ट्रिगर करता है।
सभी कोड टाइपस्क्रिप्ट है, और इसे क्लाउड फ़ंक्शंस पर काम करने के लिए जेएस को ट्रांसपोंड किया जाता है।
// functions/src/music.ts
// this function runs
export const onMusicCreated = functions.firestore
.document('music/{musicId}')
.onCreate(async (snapshot) => {
console.log('on create is running')
})
// this function doesn't run
export const onMusicUpdated = functions.firestore
.document('music/{musicId}')
.onUpdate(async (change) => {
console.log('on update is running')
})
दोनों कार्य अंतिम कोड में होने के कारण async हैं,
फ्रंट-एंड पर, जब मैं add
फ्रंट-एंड पर फ़ंक्शन चलाता हूं , तो onCreate
फ़ंक्शन फायर हो जाता है।
const { id } = await firebase.firestore().collection('music').add({ title: 'hello world' })
कंसोल लॉग अपेक्षित रूप से चलता है और एमुलेटर कंसोल में इसे आउटपुट करता है:
i functions: Beginning execution of "onMusicCreated"
i functions: Finished "onMusicCreated" in ~1s
फिर भी जब मैं उसी दस्तावेज़ को अद्यतन करता हूं, तो onUpdate
फ़ंक्शन नहीं चलता है।
// "id" is the same id as above
await firebase.firestore().doc(`music/${id}`).update({ title: 'new title' })
कुछ नहीं हुआ। मैं पुष्टि कर सकता हूं कि जब मैं फायरस्टार एमुलेटर में देखता हूं तो दस्तावेज़ वास्तव में अपडेट होता है। क्या मुझसे साफ़ - साफ़ कुछ चीज़ चूक रही है? मेरे वास्तविक उपयोग की तुलना में फ्रंट-एंड कोड सरल है, लेकिन फ़ंक्शंस कोड बिल्कुल भी सरल नहीं है। और मैं पुष्टि कर सकता हूँ कि फायरस्टार दस्तावेज़ बनाया गया है और जैसा कि मुझे उम्मीद है, अपडेट किया गया है।
कंसोल या लॉग में कोई त्रुटि संदेश नहीं।
डिबग चरण
- मैंने यह सुनिश्चित करने के लिए जाँच की है कि फ़ंक्शन कोड सही ढंग से JS को ट्रांसप्लड किया गया था। मैंने दोनों कोड आउटपुट को देखा, साथ ही उस फ़ंक्शन को अपडेट करने के लिए कई बार ऑनक्रिएट कोड को अपडेट किया
- मैंने अपने सभी कोड को फ़ंक्शन के अंदर खोखला कर दिया (जैसा कि ऊपर दिखाया गया है), इसलिए मैं यह पुष्टि कर सकता हूं कि फ़ंक्शन स्वयं नहीं चल रहा है
- OnUpdate फ़ंक्शन तकनीकी रूप से दो मापदंडों को स्वीकार करता है। दोनों मापदंडों के साथ समान परिणाम।
- मैंने उत्पादन में कार्यों की कोशिश नहीं की है, केवल एमुलेटर के साथ।
संबंधित पोस्ट
फायरस्टार क्लाउड फ़ंक्शंस एमुलेटर पर फायरस्टार ऑनवाइट ट्रिगर क्यों नहीं मिलता है?
मैं दस्तावेज़ चयनकर्ता में किसी भी निषिद्ध वर्ण का उपयोग नहीं कर रहा हूं, या कम से कम मुझे वह त्रुटि संदेश नहीं मिल रहा है।
फायरस्टार के लिए फायरबेस क्लाउड फ़ंक्शंस ट्रिगर नहीं कर रहे हैं
3.11.0 फ़ंक्शन का उपयोग करना, और फ़ंक्शन एसिंक्स हैं, इसलिए उन्हें स्पष्ट रूप से वादा वापस करना चाहिए। जब परिणाम एक मान लौटाते हैं तो परिणाम समान होते हैं (जैसे, return 0
)
https://firebase.google.com/docs/functions/firestore-events#trigger_a_function_when_a_document_is_updated
वह आधिकारिक डॉक्स है। जहाँ तक मैं बता सकता हूँ, मैं वही कर रहा हूँ जो डॉक्स कहता है। मैं बस स्पष्ट रूप से स्पष्ट रूप से कुछ याद कर रहा हो सकता है।
अन्य विवरण
- macOS बिग सूर 11.1 (20C69)
- फायरबेस सीएलआई 9.1.0
एमुलेटर अप-टू-डेट होना चाहिए
कोई राय? धन्यवाद!
जवाब
मुझे पता है कि मैं अभी onMusicUpdated
index.ts फ़ंक्शन फ़ाइल में आयात करना भूल गया था । इसलिए एमुलेटर कभी नहीं जानता था कि यह अस्तित्व में है!
बदला हुआ
// functions/src/index.ts
export { onMusicCreated } from './music'
सेवा मेरे
// functions/src/index.ts
export { onMusicCreated, onMusicUpdated } from './music'