1. ホーム
  2. java

[解決済み] Google firebaseで子供が存在するかどうかを確認する

2022-02-17 18:29:13

質問

私のアプリでは、firebase上のデータベースの与えられた要素が、与えられた名前の子要素を持つかどうかをチェックする必要があります。私はそれが線の上に何かを使用することによって行われることを望みました。

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();

if (rootRef.childExists("name")) {
    //run some code
}

検索してみましたが、役に立つものは見つかりませんでした。

どのように解決するのですか?

編集2:上に載せる価値あり。 これは、データが存在するかどうかを確認するために、このスナップショットで実際にすべてのデータをダウンロードしていることを述べておく価値があると思います。ここで気をつけなければならないことがあります。参照先が巨大な場合(例えば 実際に その場合、存在確認に使用できる深いノードを見つけるか、データ構造を別の方法で設計して効率的な確認ができるようにする必要があります。

データベース参照は、事実上そのデータのURLです。あなたは、実際に 得る のデータから、子が存在するかどうかを確認します。このため、あなたが探していると思われるメソッドは データスナップショット .

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
rootRef.addListenerForSingleValueEvent(new ValueEventListener() {
  @Override
  void onDataChange(DataSnapshot snapshot) {
    if (snapshot.hasChild("name")) {
      // run some code
    }
  }
});

さて、このデザインパターンは少し違和感があります。name"が存在するかどうかを確認するためだけに、データベース全体を読み込んでいるのです。をリッスンすることで、これをもう少し効率的にすることができます。 rootRef.child("name") をチェックし、さらに snapshot.exists() .

を行おうとしている場合 バリデーション このコードは、コントロールフローではなく、以下のようなコードを rules.json .

編集 : もともと間違った関数名を使っていました(hasChildの代わりにchildExists)。