8

私の限られた理解と SQL のバックグラウンドにより、hasChild() と forEach(); の使用法を完全に理解しているわけではありません。スナップショットではなく参照に属しているように感じます。

(以降の説明では hasChild() を使用しますが、概念は交換可能です。)

これが私の推論です:

  1. users テーブルに対して呼び出される Firebase パスがあります。appname/users
  2. ユーザー (Fred) が存在するかどうかを確認したい
  3. 私は参照を取得します:var users = new Firebase('appname/users')

しかし、ここから子供が存在するかどうかは判断できません。だからここに私が今持っているものがあります:

users.child('Fred').once('value', function(snapshot) {
   /** waits around forever if Fred doesn't exist */
});

しかし、それはうまくいきません。したがって、次のような方法でユーザーの値を取得する必要があります (私はユーザーに興味がないので、これは少し直感に反するように感じます)。

var users = new Firebase('http://.../appname/users');
users.once('value', function(snapshot) { 
      snapshot.childExists('Fred', function(exists) { 
         /* do something here*/ 
      }); 
   });

ドキュメントに基づいて、フェッチすることで大きなオーバーヘッドが発生するとは思いませんappname/usersが、キー「Fred」が存在するかどうかを判断したいだけの場合、これは見苦しいコードのように感じます。

私は次のようなものを見たいです:

var users = new Firebase('http://.../appname/users');
users.hasChild('Fred', function(exists[, snapshotOfFred]) { 
   /* do something here*/ 
});

forEach/hasChild を使用するより良い方法はありますか? ここで重要な論理的考慮事項を見逃していませんか?

4

1 に答える 1