我如何通过firebase中的键读取项目?

时间:2016-07-07 08:47:50

标签: angularjs firebase firebase-realtime-database

这是我的尝试,但它返回未定义但我已经认为这不可能在没有https://mypai.com/api/users或类似性质的情况下完成。

.child(keys)

这是我的firebase json文本。我想通过许多密钥阅读电子邮件姓氏和用户名,而不仅仅是每个密钥。

var ref = new Firebase("https://users.firebaseio.com/");
ref.child("users").child(authData.uid).on("value", function(snapshot) {
  var users = snapshot.val();
  console.log("snap: " + snapshot.val());
  console.log("username: " + users.username);
  console.log("username: " + users.email);
});

3 个答案:

答案 0 :(得分:0)

您还没有在任何地方定义您的firebase项目。 我想你必须这样使用。

<script>
// Initialize Firebase
var config = {
  apiKey: "your_api_key",
  authDomain: "project-0000000000000000.firebaseapp.com",
  databaseURL: "https://project-0000000000000000.firebaseio.com",
  storageBucket: "project-0000000000000000.appspot.com",
};
firebase.initializeApp(config);
var ref= firebase.database().ref();
ref.child("users").child(authData.uid).on("value", function(snapshot) {
var users = snapshot.val();
console.log("snap: " + snapshot.val());
console.log("username: " + users.username);
console.log("username: " + users.email);
});
</script>

答案 1 :(得分:0)

您正在寻找与orderByChild结合的equalTo

ref.child("users").orderByChild("username").equalTo("smith").on("value", function(snapshot) {
  var users = snapshot.val();
  console.log("snap: " + snapshot.val());
  //loop over the found results
  snapshot.forEach(function(user){
      console.log(user);
  });
});

在您的代码段中,您正在使用旧版sdk初始化您的参考。新的firebase sdk已经改变了一点。

firebase.initializeApp(config);
var ref= firebase.database().ref();

另请注意,您无法使用多个orderByChild来查询多个子参数。在这种情况下,this question将为您提供有关如何处理它的一些想法。

答案 2 :(得分:0)

taskref.onAuth(function(authData) {
      taskref
        .child("users")
        .child(authData.uid)
        .child("task")
        .orderByChild('date')
        .on('value', function(snapshot) {
          $scope.list = [];
          snapshot.forEach(function(child) {
            //  $scope.list = $scope.list.concat(child.val());
            $scope.list.splice(0, 0, child.val());
            console.log($scope.list);
          });

          $scope.taskKeys = function() {
            return Object.keys($scope.list);
          }

          $scope.complete = function(key) {
            taskref.child("users")
              .child(authData.uid)
              .child('task')
              .child(key)
              .set({
                status: true
              });
          }

        });