3

AngularFire 8.0 の使用

以下は、startAt と endAt を使用して firebase からのデータを制限するコードです。

$rootScope.$on('$firebaseSimpleLogin:login', function(e, authUser){

  var queryRef = ref.startAt(authUser.uid).endAt(authUser.uid);

  var queryArray = $firebase(queryRef).$asArray();

  queryArray.$loaded().then(function() {

    setCurrentUser(queryArray.$keyAt(0));

  });
});

返されるデータは firebase からの単一の要素である必要がありますが、デバッグに console.log を使用すると queryArray が空になります。

startAt と endAt を使用しないと、queryArray には firebase に格納されているすべての要素が含まます。これは予想どおりです。

Firebase 8.0 のリリース ノートも確認しましたが、これらのリミッターに変更は見られません。

構文上の誤りや、目的の結果を達成できる代替ソリューションがあれば指摘してください。

基本的に、現在のユーザーであるFirebaseから単一のレコードが必要です.authUserは、優先度としてauthUser.uidを持つ承認されたユーザーです。

以下は、ユーザー登録時に Firebase に入力される JSON ファイルです。

{
  "users" : {
    "User A" : {
      "md5_hash" : "d10ca8d11301c2f4993ac2279ce4b930",
      "setPriority" : "simplelogin:69",
      "username" : "User A"
    },
    "User B" : {
      "md5_hash" : "2076105f6efe7c11e285add95f514b9a",
      "setPriority" : "simplelogin:70",
      "username" : "User B"
    },
    "User C" : {
      "md5_hash" : "a6d14de05d7b2c3cf4fae7ae14cfa7f3",
      "setPriority" : "simplelogin:71",
      "username" : "User C"
    }
  }
}

編集後

以下のコードを使用して優先度を取得します。

queryRef.once('value', function(nameSnapshot) {
  var val = nameSnapshot.getPriority();
  console.log("Priority is: " + val );
});

ログ出力は次のとおりです。

優先度: null

ユーザーを Firebase に追加する方法は次のとおりです。

create: function (authUser, username) {
  users[username] = {
    md5_hash: authUser.md5_hash,
    username: username,
    setPriority: authUser.uid
  };

users.$update(username, {
    md5_hash: authUser.md5_hash,
    username: username,
    setPriority: authUser.uid
    //$priority: authUser.uid
  }).then(function () {
    setCurrentUser(username);
  });

}, // end of create method
4

1 に答える 1

1

すべてのデータの優先度が null のようです。これによりendAtstartAtが正常に動作しなくなります。

何かが起きているという手がかりはsetPriority、データ内にキーが存在することです。優先順位は、通常のビューの外で管理されるメタデータです。

ユーザー作成コードを次のように変更します。

create: function (authUser, username) {
  users[username] = {
    md5_hash: authUser.md5_hash,
    username: username,
    .priority: authUser.uid
  };

} // end of create method

またはこれ:

create: function (authUser, username) {
  users[username] = {
    md5_hash: authUser.md5_hash,
    username: username
  };

users.$update(username, {
    md5_hash: authUser.md5_hash,
    username: username
  }).then(function (dataRef) {
    dataRef.setPriority(authUser.uid);
    setCurrentUser(username);
  });

} // end of create method
于 2014-08-21T18:17:44.557 に答える