2013-02-17 15 views
5

मैं सुरक्षा नियम का उपयोग कर नोड के अधिकतम संख्या को कैसे लागू कर सकता हूं?मैं नोड में अधिकतम संख्या में बच्चों को कैसे लागू कर सकता हूं?

/bar/customers/$customer/drinks_ordered 

पंद्रह से अधिक बच्चे नहीं होना चाहिए।

उत्तर

4

ऐसा लगता है कि आप आदेशित पेय के लिए एक संख्यात्मक आईडी का उपयोग कर सकते हैं और फिर ऐसा कुछ करने का प्रयास करें; यह असफल हो जायेगी क्योंकि आईडी एक स्ट्रिंग है:

"$customer_id": { 
    "drinks_ordered": { 
     "$drink_id": { 
      ".validate": "$drink_id > 0 && $drink_id < 16" // error 
     } 
    } 
} 

इसके बजाय, आप एक काउंटर का उपयोग कर सकते हैं और मान्य काउंटर 1-15 होने के लिए, और फिर पेय आईडी काउंटर से मेल खाता है मान्य।

/bar/customers/george_thorogood/counter/3 
/bar/customers/george_thorogood/drinks_ordered/1/burbon 
/bar/customers/george_thorogood/drinks_ordered/2/scotch 
/bar/customers/george_thorogood/drinks_ordered/3/beer 

अब एक ग्राहक एक और पेय जोड़ सकता से पहले, वे (4 के लिए काउंटर स्थापित करने के लिए है जो यह कर सकते हैं केवल एक चीज है होगा:

"$customer_id": { 
    "counter": { 
     // counter can only be incremented by 1 each time, must be a number 
     // and must be <= 15 
     ".validate": "newData.isNumber() && newData.val() > 0 && newData.val() <= 15 && ((!data.exists() && newData.val() === 1) || (newData.val() === data.val()+1))" 
    }, 
    "drinks_ordered": { 
     // new record's ID must match the incremented counter 
     "$drink_id": { 
      // use .val()+'' because $drink_id is a string and Firebase always uses ===! 
      ".validate": "root.child('bar/customers/'+$customer_id+'/counter').val()+'' == $drink_id" 
     } 
    } 
} 

स्वाभाविक रूप से, अपने पेय कुछ इस तरह दिखेगा पर सेट करें) और उसके बाद उसी आईडी के साथ पेय जोड़ें।

थोड़ा चौराहे, लेकिन यह काम करता है:)

+0

मैंने पहले उदाहरण का भी प्रयास किया। इसे समर्थित करना सुविधाजनक होगा। काउंटर विधि चालाक है! – abrkn

+0

मैंने इसके साथ संघर्ष किया क्योंकि मुझे वैध होने के बारे में '.val' के बारे में कोई त्रुटि नहीं मिली। समस्या सत्यापन नमूना के साथ था। होना चाहिए: '"। Validate ":" root.child ('/ bar/customers /' + $ customer_id + '/ counter')। Val() + '' == $ drink_id "', है ना? – Justin

+0

सही लगता है, जस्टिन। धन्यवाद! – Kato