Я пытаюсь получить фильтр Firebase, используя несколько полей. Это более или менее мой объект в Firebase:
{
"id": "-id",
"category": "History",
"level": "High School",
"pointAmount": 128,
"pointBoost": 0,
"photoURL": "link"
},
{
"id": "-id",
"category": "Physics",
"level": "Primary School",
"pointAmount": 128,
"pointBoost": 0,
"photoURL": "link"
}
То, что я сейчас делаю, использует массив флажков в React для захвата level
и category
для фильтрации. Эта часть сделана. У меня вопрос, как я могу отфильтровать элементы, поступающие из базы данных? Вот как я это делаю прямо сейчас:
componentDidMount() {
const assignmentsRef = firebase
.database()
.ref('Works')
.orderByChild('available')
.equalTo(true)
.limitToFirst(9);
assignmentsRef.on('value', snapshot => {
let assignments = snapshot.val();
let newState = [];
for (let assignment in assignments) {
newState.push({
id: assignment,
category: assignments[assignment].category,
level: assignments[assignment].level,
pointAmount: assignments[assignment].pointAmount,
pointBoost: assignments[assignment].pointBoost,
photoURL: assignments[assignment].photoURL,
workText: assignments[assignment].workText,
});
}
this.setState({
assignments: newState
});
});
}
Итак, как вы видите, я уже делаю orderByChild
. Также будет несколько переменных для фильтрации. Например: если я выберу History
и Physics
, я получу оба объекта. То же самое, если я выберу History
и Primary School
, но если я выберу Physics
, я должен получить только второй объект. Как я могу отфильтровать это? Будет более 10 фильтров.