Chỉnh sửa 2; giá trị đặt trên đầu trang: Tôi nghĩ rằng nó là đáng nói đến là điều này thực sự là tải về tất cả các dữ liệu tại ảnh chụp này chỉ để kiểm tra xem có bất kỳ dữ liệu tồn tại. Bạn nên chú ý ở đây. Nếu tham chiếu quá lớn (ví dụ: thực sự là tham chiếu gốc và không phải là con/thuộc tính cụ thể) thì bạn nên tìm một nút sâu hơn mà bạn có thể sử dụng để kiểm tra sự tồn tại hoặc thiết kế cấu trúc dữ liệu của bạn khác nhau.
Tham chiếu cơ sở dữ liệu thực sự là URL cho dữ liệu đó. Bạn thực sự muốn nhận được dữ liệu để xem liệu một đứa trẻ có tồn tại hay không. Đây là lý do tại sao phương pháp bạn có vẻ đang tìm kiếm là trên DataSnapshot.
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
rootRef.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
void onDataChange(DataSnapshot snapshot) {
if (snapshot.hasChild("name")) {
// run some code
}
}
});
Bây giờ, mẫu thiết kế này có vẻ hơi lạ. Bạn đang đọc toàn bộ cơ sở dữ liệu chỉ để xem liệu "tên" có tồn tại không. Bạn có thể làm điều này hiệu quả hơn một chút bằng cách nghe rootRef.child("name")
và sau đó chỉ kiểm tra xem snapshot.exists()
.
Nếu bạn đang cố gắng thực hiện xác thực tại đây và không kiểm soát luồng, bạn nên cân nhắc việc đặt mã này vào số rules.json
của mình.
chỉnh sửa: Tôi ban đầu được sử dụng tên hàm sai (childExists thay vì hasChild)
Nguồn
2016-05-23 22:21:13
http://stackoverflow.com/a/36826793/3145960 –
có thể trùng lặp của [Understanding nếu dữ liệu tồn tại trong căn cứ hỏa lực] (http://stackoverflow.com/questions/36826429/understanding-if-data-exists-in-firebase) –