2016-08-18 30 views
7
{ 
    "random_key 1" : { 
    "id": 0, 
    "text": "This is text" 
    }, 
    "random_key 2" : { 
    "id": 1, 
    "text": "This is text" 
    } 
} 

Nếu tôi lưu trữ dữ liệu của tôi như thế này và tôi muốn nhận nút ở đó id bằng 0. Làm thế nào tôi có thể làm điều đó?Dữ liệu truy vấn Firebase

Ở trên là con của issue, là con của root.

+0

Tôi diễn đạt câu hỏi của tôi một hơi khác, nhưng câu trả lời trong bài viết của tôi sẽ giúp bạn. http://stackoverflow.com/questions/39023945/how-to-get-data-from-real-time-database-in-firebase/39024068#39024068 –

+0

Nếu bạn có ID hiện tại, tại sao bạn không lưu trữ dữ liệu theo ID đó? Nó sẽ làm cho việc tìm kiếm dễ dàng hơn rất nhiều. –

+0

@FrankvanPuffelen Tôi đã lưu trữ tất cả dữ liệu theo ID; giá trị nào tôi cần phải chuyển cho truy vấn orderbychild trên ID đó? – Shruti

Trả lời

22

Trong trường hợp của bạn, bạn sẽ phải thiết lập một truy vấn như thế này:

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

    Query query = reference.child("issue").orderByChild("id").equalTo(0); 
    query.addListenerForSingleValueEvent(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 
      if (dataSnapshot.exists()) { 
       // dataSnapshot is the "issue" node with all children with id 0 
       for (DataSnapshot issue : dataSnapshot.getChildren()) { 
        // do something with the individual "issues" 
       } 
      } 
     } 

     @Override 
     public void onCancelled(DatabaseError databaseError) { 

     } 
    }); 
+0

Bạn có thể giúp tôi về cùng một loại vấn đề trong câu hỏi này không: - http://stackoverflow.com/q/42502024/3946958 ... Và bạn có thể cho tôi biết rằng "vấn đề" trong câu trả lời của bạn là gì? ??? –

+0

nó hoạt động cho tôi, nhưng bạn có thể cho biết cách chúng tôi có thể lọc dữ liệu với nhiều tùy chọn..như người dùng từ quốc gia, tiểu bang, thành phố –

+0

Nhưng nếu tôi không muốn đặt hàng bằng orderByChild thì sao? Tôi chỉ muốn phù hợp với id ... để tôi đặt hàng kết quả là tính toán thêm. – dsharew

1

@ câu trả lời Linxy là đúng nhưng vì bạn sẽ được đọc một danh sách các mục từ cơ sở dữ liệu, nó tốt hơn để sử dụng một đứa trẻ trình xử lý sự kiện thay vì trình nghe sự kiện giá trị.

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

Query query = reference.child("issue").orderByChild("id").equalTo(0); 
query.addChildEventListener(new ChildEventListener() { 
    @Override 
    public void onChildAdded(DataSnapshot dataSnapshot, String s) { 
     //Do something with the individual node here`enter code here` 
    } 

    @Override 
    public void onChildChanged(DataSnapshot dataSnapshot, String s) { 

    } 

    @Override 
    public void onChildRemoved(DataSnapshot dataSnapshot) { 

    } 

    @Override 
    public void onChildMoved(DataSnapshot dataSnapshot, String s) { 

    } 

    @Override 
    public void onCancelled(FirebaseError firebaseError) { 

    } 


}); 
0

Mã này làm việc cho tôi

mFirebaseDatabase.addListenerForSingleValueEvent(new ValueEventListener() { 
      @Override 
      public void onDataChange(final DataSnapshot dataSnapshot) { 
       for (DataSnapshot data : dataSnapshot.getChildren()) { 
       //If email exists then toast shows else store the data on new key 
        if (!data.getValue(User.class).getEmail().equals(email)) { 
         mFirebaseDatabase.child(mFirebaseDatabase.push().getKey()).setValue(new User(name, email)); 
        } else { 
         Toast.makeText(ChatListActivity.this, "E-mail already exists.", Toast.LENGTH_SHORT).show(); 
        } 
       } 
      } 

      @Override 
      public void onCancelled(final DatabaseError databaseError) { 
      } 
     }); 
0

Đối với một tích hợp nền tảng chéo dễ sử dụng căn cứ hỏa lực bạn cũng có thể có một cái nhìn tại V-Play Engine for mobile apps

FirebaseDatabase { 
    id: firebaseDb 

    Component.onCompleted: { 
    //use query parameter: 
    firebaseDb.getValue("public/bigqueryobject", { 
        orderByKey: true, //order by key before limiting 
        startAt: "c",  //return only keys alphabetically after "c" 
        endAt: "m",  //return only keys alphabetically before "m" 
        limitToFirst: 5, //return only first 5 sub-keys 
    }) 
    } 
} 
Các vấn đề liên quan