2017-06-17 6 views
5

मैं निम्नलिखित कार्यों कि इतने की तरह एक डेटाबेस ट्रिगर के लिए एक onWrite घटना को सुनता है के लिए जाँच हो रही है हटा दिया या जोड़ा गया। मैं कैसे जांचूं कि ऑनवाइट ईवेंट उस विशेष नोड के लिए 'डिलीट' ईवेंट है, या 'एड' इवेंट है, जैसे कि यह फ़ंक्शन केवल 'एड' ईवेंट होने पर ही कॉल हो जाता है।Firebase:</p> <pre><code>exports.sendNotifications = functions.database.ref('/events/{eventId}/registered') .onWrite(event => { ... }); </code></pre> <p>ऊपर समारोह परवाह किए बिना कहा जाता है नोड है कि क्या: 'लिख सकते हैं या हटा सकते हैं' onWrite घटनाक्रम

उत्तर

5

event जो फ़ंक्शन में पारित होता है, उसमें पिछले डेटा और उस स्थान के लिए नया डेटा होता है जो फ़ंक्शन को ट्रिगर करता है। जानकारी के इन दो टुकड़ों के साथ, आप कटौती कर सकते हैं कि यह एक नया लेखन, एक अद्यतन, या एक हटा था।

Firebase documentation for database functions से

:

exports.makeUppercase = functions.database.ref('/messages/{pushId}/original') 
.onWrite(event => { 
    // Only edit data when it is first created. 
    if (event.data.previous.exists()) { 
    return; 
    } 
    // Exit when the data is deleted. 
    if (!event.data.exists()) { 
    return; 
    } 
+0

सुनिश्चित करें कि यदि आप कोई काम नहीं करते हैं तो आप फायरबेस फ़ंक्शन से शून्य वापस कर लें –

0

तो बादल firestore करने के लिए अपने परिवर्तन तो यह हो जाएगा:

// Only edit data when it is first created. 
    if (event.data.previous.exists) { 
    return; 
    } 
    // Exit when the data is deleted. 
    if (!event.data.exists) { 
    return; 
    } 
0

निम्न आलेख पढ़ने के बाद, घटना तत्व पर एक और जाँच जोड़ने if-then कथन के कुछ फायदे हैं: https://firebase.googleblog.com/2017/07/cloud-functions-realtime-database.html

exports.sendNotification = functions.database 
     .ref("/messages/{messageId}").onWrite(event => { 
    if (event.data.exists() && !event.data.previous.exists()) { 
     // This is a new message, not a change or a delete. 
     // Put code here 
    } 
}) 

यदि डेटाबेस से पढ़ा गया विफल (शायद एक नेटवर्क त्रुटि ???), तो event.data.previous.exists() गलत होगा। event.data.exists() के अतिरिक्त यह सुनिश्चित करता है कि ईवेंट तत्व में वास्तव में डेटा है जिसका आप उपयोग कर सकते हैं।

संबंधित मुद्दे

 संबंधित मुद्दे