2016-11-07 40 views
18

Tôi có cơ cấu như sau trên cơ sở dữ liệu căn cứ hỏa lực của tôi: firebase databasetìm kiếm căn cứ hỏa lực bởi giá trị con

Tôi muốn tìm kiếm một người dùng theo tên, họ hoặc email nhưng như tôi có chìa khóa người sử dụng ở mức trên Tôi không biết làm thế nào tôi có thể đạt được điều này. Tôi đang làm và phiên quản trị viên nên nó sẽ không có quyền truy cập vào khóa người dùng.

Tôi đã thử:

let usersRef = firebase.database().ref('users'); 
usersRef.orderByValue().on("value", function(snapshot) { 
    console.log(snapshot.val()); 
    snapshot.forEach(function(data) { 
     console.log(data.key); 
    }); 
}); 

Nhưng nó mang lại tất cả những người sử dụng trên cơ sở dữ liệu. Bất kỳ ý tưởng?

Trả lời

24

Bạn có thể sử dụng equalTo() để tìm bất kỳ giá trị con nào. Trong trường hợp của bạn bằng cách name:

ref.child('users').orderByChild('name').equalTo('John Doe').on("value", function(snapshot) { 
    console.log(snapshot.val()); 
    snapshot.forEach(function(data) { 
     console.log(data.key); 
    }); 
}); 

Bạn có thể tìm thấy tất cả các tài liệu here

+0

Đây có phải là có thể thực hiện như một hệ thống tự động hoàn tất? Giống như, nếu người dùng nhập 'John', bạn có thể gọi orderByChild dựa trên mức độ liên quan không? – Epicality

+0

@Epicality bạn có thể sử dụng 'startAt()' để làm một cái gì đó như bạn đang đề cập đến. [Ở đây] (https://firebase.google.com/docs/database/web/lists-of-data#filtering_data) bạn có thể tìm thấy tất cả tài liệu. Nhưng về cơ bản tìm kiếm dưới dạng 'equalTo()' nhưng chỉ kiểm tra xem chuỗi có bắt đầu với người dùng hay không. –

+0

Làm thế nào tôi có thể nhận được các nút có hai giá trị boolean w thứ hai: trường đầu tiên hoặc thứ hai là 'true'? –

Các vấn đề liên quan