2017-09-09 4 views
0

그래서 Firebase 데이터베이스를 처음 접했고 내가 좋아하는 것은 단순한 데이터를 저장하기위한 전체 백엔드를 작성할 필요가 없다는 것입니다. 내가하려는 것은 firebase에서받는 배열에 데이터를 밀어 넣는 것입니다. 그 다음에는 채워진 이메일이 firebase 데이터베이스의 데이터에 포함되어 있는지 확인하고 싶습니다. 하지만 그것은 firebase이기 때문에 여러 배열, 객체 등을 가지고 있습니다. 어떻게 체크해야할지 모르겠습니다. 따라서 흐름은 다음과 같습니다. 사용자가 데이터를 채우면 응용 프로그램이 firebase db를 호출하고 응용 프로그램이 firebase에서 현재 데이터를 검색합니다. 그런 다음 응용 프로그램은 입력 된 데이터가 이미 있는지 확인하고, 그렇다면 데이터가 이미 데이터베이스에 있음을 경고합니다. 그렇지 않은 경우 데이터가 제출됩니다. 당신으로 콘솔(Firebase 검색 데이터 JS)

enter image description here

Main.js

function writeUserData() { 

    var name = document.getElementById("name").value; 
    var email = document.getElementById("email").value; 

    firebase.database().ref('/aanmeldingen/').push({ 
     username: name, 
     email: email, 
    }); 

    var dbRef = firebase.database().ref().child('/aanmeldingen/'); 
    dbRef.on('value', snapshot => { 
     const snap = snapshot.val(); 
     const array = []; 

     array.push(snap); 
     console.log(array); 

     const res = array.includes(email); 
     console.log(res); 
     console.log(email); 
    }); 
} 

출력 :이 데이터베이스에서 데이터를 검색 할 수있는 올바른 방법 인 경우

또한, 나는 궁금 이것이 다중 데이터를 반환하는 것을 볼 수 있습니다. include 함수는 제출 된 emailadress를 검사합니다. 이것은 "[email protected]"을 입력했다고해도 false를 반환합니다. 올바른 데이터 객체를 어떻게 확인할 수 있습니까? 제출 된 emailadress가 이미있는 경우 "0"아래의 모든 객체를 확인하고 콘솔에 반환해야합니다.

+0

이 나타납니다 중포 기지가 객체를 반환해야하는지 여부를 푸시을하고 난 당신이 (나중에 참조하는 데 사용할 수있는 항목의 ID를 포함하도록 기대하는 때와 같이 즉, 당신을 볼 수있는 재미 문자열 데이터를 나중에 읽음) DB에 있는지 확인하십시오. 그렇지 않으면 "전자 메일"키의 특정 값을 가진 레코드가 있는지 확인하기 위해 다른 쿼리를 만들 것입니다. –

답변

0

아직 테스트하지는 않았지만 아이디어를 얻으시기 바랍니다. 또한 이것은 가장 효율적인 방법이 이 아니며입니다.

function ifEmailExist(arr,email){ 
    var _t = 0; 
    for(var x in arr){ 
     for(var y in arr[x]){ 
      if(arr[x][y].email){ 
       if(arr[x][y] === email){ 
        _t++; 
       } 
      } 
     } 
    } 
    return _t; 
} 

사용법 :

if(ifEmailExist(arr,"[email protected]") > 0){ 
    //do stuff 
} 
+0

이것은 항상'false'를 리턴 할 것 같습니다. – Gijsberts

0

당신은 child_added 대신 value 사용해야합니다. 새 노드가 데이터베이스에 추가 될 때마다 child_added가 트리거되고 데이터에 대한 작업을 수행 할 수 있습니다.

var dbRef = firebase.database().ref().child('aanmeldingen'); 
dbRef.on('child_added', snapshot => { 
    var username = snapshot.val().username; 
    var email = snapshot.val().email; 

    console.log(username); 
    console.log(email); 
}); 
+0

아마도 내 질문이 충분히 명확하지 않았을 수 있습니다. 내가 원하는 것은 Firebase에서 모든 데이터를 검색하여 입력 된 값이 이미 데이터베이스 내에 있는지 확인하는 것입니다. 그렇다면 데이터를 제출하지 마십시오. – Gijsberts

+0

나는 달성하고자하는 것을 제거하기 위해 설명을 약간 편집했습니다. – Gijsberts

+0

@ Gijsberts 고유 한 값을 검사하기 위해 JS 코드가 필요하지 않습니다. Firebase 데이터베이스 보안 규칙을 사용할 수 있습니다. [this] (https://stackoverflow.com/a/20291163/4152581) 및 [this] (https://stackoverflow.com/a/35244705/4152581)를 확인하십시오. –