【问题标题】:How to check if data exist?如何检查数据是否存在?
【发布时间】:2018-03-23 08:16:25
【问题描述】:

Firebase 规则配置:

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

Firebase 数据库数据示例

使用这个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');
  }
});

哪一部分可能出错了?

【问题讨论】:

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


【解决方案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

另外,孩子是用来走一条路的,而且所有这些孩子都在同一级别,所以它不会起作用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-24
    • 1970-01-01
    • 2019-11-13
    • 2013-07-16
    • 2016-09-21
    相关资源
    最近更新 更多