2016-07-17 10 views
6

मेरे पास 2 ऑब्जेक्ट्स वाला डेटाबेस है। यह इस तरह दिखता है:फ़ायरबेस एंजुलरफायर 2 जांच रहा है कि उपयोगकर्ता डेटाबेस में मौजूद है

users 
    - KEY 
     login: "xexe" 
     password: "123" 

    - KEY 
     login: "dede" 
     password: "123" 

अब मैं उपयोगकर्ता डेटाबेस

constructor(private af: AngularFire) { 
    this.users = af.database.list('/users'); 
    } 

    registerUser(login: string, password: string) { 
    this.af.database.list('/users', { 
     query: { 
     orderByChild: 'login', 
     equalTo: login 
     } 
    }).subscribe(response => { 
     if(response.length === 0) { 
     console.log("User does not exist"); 
     //here i will add a user 
     } else { 
     console.log("Users exists"); 
     } 
    }) 
    } 

समस्या क्या है में मौजूद रहने पर जाँच कर रहा हूँ?

की 'देदे "प्रवेश के साथ एक उपयोगकर्ता रजिस्टर करने के लिए कोशिश करते हैं (उपयोगकर्ता चाहिए मौजूद है)

जब मैं एक सबमिट बटन पर पहली बार क्लिक करें, कंसोल पता चलता है: Users exists -> अच्छी तरह से, यह अच्छी बात है।

समस्या जब मैं

फिर console.log मुझे दो संदेश

User does not exist 
User exists 

और कहा कि एक नया उपयोगकर्ता जोड़ना होगा क्या नहीं करना चाहिए पता चलता (वेबपेज ताज़ा बिना) दूसरी बार सबमिट क्लिक करें है सामाप्त करो। क्यों दूसरी बार सबस्क्राइब फ़ंक्शन हर पंक्ति के माध्यम से पुनरावृत्त होता है? इसे कैसे जोड़ेंगे?

उत्तर

9

किसी क्वेरी का उपयोग करने के बजाय, आप login संपत्ति का उपयोग करने के लिए अपने डेटा को KEY उपयोग कर सकते हैं।

{ 
    "users": { 
    "dede": { 
     "login": "dede", 
     "password": "Do not store passwords :)" 
    }, 
    "xexe": { 
     "login": "xexe" 
    } 
    } 
} 

अब आप इस स्थान का संदर्भ बना सकते हैं और जांच सकते हैं कि ऑब्जेक्ट मौजूद है या नहीं।

registerUser(login: string, password: string) { 
    const user = this.af.database.object(`users/${login}`); 
    user.subscribe(data => { 
    if(data.$value !== null) { 
     console.log('User does not exist'); 
    } else { 
     console.log('User does exist'); 
    } 
    }); 
} 
+0

क्या यह 'if (डेटा। $ Value! = Null) {', 'if (data। $ Value! == null) {' के बजाय होना चाहिए? – alltej

+0

मैं angularFire2 का उपयोग कर रहा हूँ। ऑब्जेक्ट के लिए यह चेक काम नहीं कर रहा है। – alltej

+0

मुझे यह भी '' const उपयोगकर्ता = this.af.database.object ('users/$ {login} ', {preserve स्नैपशॉट: सत्य}) करना है;' 'इसे काम करने के लिए और' data.val का उपयोग करना है () ' – alltej

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