Firebase DB에 값이 있는지 확인합니다.
DB에 값이 존재하는지 확인할 수 있는 firebase 방법이 있습니까?Firebase에는 .exist() 메서드가 있지만 문서에 따라 키만 확인합니다.
저는 다음과 같은 구조를 가지고 있습니다.
{
"users": {
"-KKUmYgLYREWCnWeHCvO": {
"fName": "Peter",
"ID": "U1EL9SSUQ",
"username": "peter01"
},
"-KKUmYgLYREWCnWeHCvO": {
"fName": "John",
"ID": "U1EL5623",
"username": "john.doe"
}
}
}
값이 있는 ID인지 확인하고 싶습니다.U1EL5623존재한다.
그exists()방법은 의 일부입니다.snapshot파이어베이스 쿼리에 의해 반환되는 개체입니다.따라서 데이터의 존재 여부를 확인하기 위해 데이터를 검색하지 않을 수 없습니다.
ref.child("users").orderByChild("ID").equalTo("U1EL5623").once("value",snapshot => {
if (snapshot.exists()){
const userData = snapshot.val();
console.log("exists!", userData);
}
});
관측치:
개체가 있을 수 있는 정확한 참조 경로가 있는 다른 시나리오에 있는 경우 추가할 필요가 없습니다.orderByChild그리고.equalTo이 경우 개체의 경로를 직접 가져와 방화벽에서 검색 처리를 수행할 필요가 없습니다.또한 개체에 필요한 속성 중 하나를 알고 있는 경우 아래의 스니펫처럼 개체 전체가 아닌 이 속성만 검색할 수 있습니다. 결과는 훨씬 더 빠른 확인이 될 것입니다.
//every user must have an email
firebase.database().ref(`users/${userId}/email`).once("value", snapshot => {
if (snapshot.exists()){
console.log("exists!");
const email = snapshot.val();
}
});
파이어베이스에 전자 메일이 있는지 확인하려는 경우에도 이와 유사한 솔루션입니다.
firebase.app().database().ref("shops").orderByChild("email")
.equalTo(user.email).once("value", snapshot => {
const userData = snapshot.val();
// Check if it is a SHOP.
if (userData) {
console.log("Shop logged in!");
this.setState({
isAdminLoggedIn: false,
isUserLoggedIn: false,
isShopLoggedIn: true,
isNoneLoggedIn: false
});
// Check if it is a USER.
} else {
console.log("User logged in");
this.setState({
isAdminLoggedIn: false,
isUserLoggedIn: true,
isShopLoggedIn: false,
isNoneLoggedIn: false
});
}
});
아직 댓글을 달 수가 없어서 이렇게 답변을 올립니다.
제안된 답변에 추가하려면 사용자가 있는지 여부를 쿼리하려면 .limitToFirst(1) 또는 .limitToLast(1)를 추가하여 성능을 향상시킬 수 있습니다.이렇게 하면 검색된 데이터를 최소로 제한할 수 있습니다.
//Check if any users exist
firebase.database().ref(`users`).limitToFirst(1).once("value", snapshot => {
if (snapshot.exists()){
console.log("exists!");
// TODO: Handle that users do exist
return true;
}
// TODO: Handle that users do not exist
});
출처: https://firebase.google.com/docs/reference/js/firebase.database.Query#limitToFirst
프로젝트의 Firebase 데이터베이스에서 URL 값을 검색한 방법은 다음과 같습니다.
const searchFirebase = (url, idx) =>
{
firebase
.app()
.database()
.ref("recipes")
.orderByChild("url")
.equalTo(url)
.once("value", (snapshot) => {
if (snapshot.exists()) {
const userData = snapshot.val();
console.log("exists!", userData);
document.querySelector(`[data-recipe-id="${idx}"]`)
.classList.replace('fav-heart', 'unfav-heart');
} else {
return false;
}
});
}
언급URL : https://stackoverflow.com/questions/37910008/check-if-value-exists-in-firebase-db
'programing' 카테고리의 다른 글
| null 값을 텍스트로 바꾸는 방법은 무엇입니까? (0) | 2023.06.13 |
|---|---|
| 파이어베이스 충돌 분석 - java.lang.잘못된 상태 예외:충돌 분석 빌드 ID가 없습니다. (0) | 2023.06.13 |
| E/Firebase 충돌 분석:https://firebase-settings.crashlytics.com/spi/v2/platforms/android/gmp/XXXX/settings 에서 설정을 검색하지 못했습니다. (0) | 2023.06.13 |
| 벡터를 배열로 변환하는 방법 (0) | 2023.06.13 |
| jquery UI 대화상자: 제목 표시줄 없이 초기화하는 방법은 무엇입니까? (0) | 2023.06.13 |