如何检查数据是否存在?

时间:2018-03-23 08:16:25

标签: javascript firebase react-native firebase-realtime-database expo

Firebase规则配置:

{
  "rules": {
    ".read": "auth != null",
    ".write": "auth != null"
  }
}

Firebase数据库数据示例

enter image description here

使用此idea,我提出了以下内容,但没有奏效。

const { currentUser } = firebase.auth();

console.log(currentUser.uid);

firebase.database().
ref(`/users/${currentUser.uid}/userSettings`)
.child({ userSetting_DisplayName, userSetting_City, userSetting_DailyLimit })
.once('value', function(snapshot) {
  if (snapshot.exists()) {
    console.log('exist');
  }else{
    console.log('not exist');
  }
});

哪个部分可能出错了?

1 个答案:

答案 0 :(得分:1)

将其更改为:

firebase.database().
ref(`/users/${currentUser.uid}/userSettings`)
.once('value', function(snapshot) {
if (snapshot.exists()) {
console.log('exist');
}else{
console.log('not exist');
  }
});

然后您就可以检查userSettings

下是否存在数据

或者如果您想检查特定孩子是否有某些数据,那么您可以这样做:

ref(`/users/${currentUser.uid}/userSettings`).orderByChild("userSetting_city").equalTo(valuehere).once(...

或者如果你想检查一个特定的孩子是否在那里:

ref(`/users/${currentUser.uid}/userSettings`).child("userSetting_DisplayName").once(...

同样来自文档:

  

child

     

child(path)返回firebase.database.Reference

     

获取指定相对路径的位置的引用。

     

相对路径可以是简单的子名称(例如," ada")或更深的斜杠分隔路径(例如," ada / name / first")

https://firebase.google.com/docs/reference/js/firebase.database.Reference#child

此外,孩子习惯经历一条路径,所有这些孩子都处于同一水平,所以它不会工作。