在Firebase中搜索多个值通常涉及到使用查询(Queries)来检索满足特定条件的数据。Firebase Realtime Database和Firestore都提供了强大的查询功能,但它们的实现方式略有不同。以下是在这两种数据库中搜索多个值的方法:
在Realtime Database中,你可以使用orderByChild()
和equalTo()
方法来搜索多个值。例如,如果你有一个名为users
的节点,你想根据多个电子邮件地址搜索用户,可以这样做:
var firebase = require('firebase');
// 初始化Firebase应用
// ...
var emails = ['user1@example.com', 'user2@example.com'];
var usersRef = firebase.database().ref('users');
var onValue = usersRef.orderByChild('email').equalTo(emails[0]).on('value', function(snapshot) {
snapshot.forEach(function(childSnapshot) {
console.log(childSnapshot.key, childSnapshot.val().email);
});
});
// 对于多个值,你需要多次调用equalTo()
emails.forEach(function(email) {
onValue = usersRef.orderByChild('email').equalTo(email).on('value', function(snapshot) {
snapshot.forEach(function(childSnapshot) {
console.log(childSnapshot.key, childSnapshot.val().email);
});
});
});
Firestore提供了更灵活的查询方式,你可以使用where()
方法来搜索多个值。例如,如果你想根据一组电子邮件地址搜索用户,可以这样做:
var firebase = require('firebase/app');
require('firebase/firestore');
// 初始化Firebase应用
// ...
var emails = ['user1@example.com', 'user2@example.com'];
var usersRef = firebase.firestore().collection('users');
var query = usersRef.where('email', 'in', emails);
query.get().then(function(querySnapshot) {
querySnapshot.forEach(function(doc) {
console.log(doc.id, ' => ', doc.data());
});
}).catch(function(error) {
console.log("Error getting documents: ", error);
});
array-contains
条件。解决方法是重新设计数据结构或使用多个查询并合并结果。请注意,Firebase的API和功能可能会随着时间更新,因此建议查看最新的官方文档以获取最准确的信息。
领取专属 10元无门槛券
手把手带您无忧上云