У меня есть три поля для данных, по умолчанию в конструкторе все они установлены для всех. Я хочу сделать несколько запросов к этим полям, как в mysql. Например: где field1 - яблоко, field2 - оранжевое, и я не касаюсь поля 3. (Кстати, Tumu означает «Все»). Вот мой код:
class Kurumlar extends Component {
constructor(props) {
super(props);
this.state = {
data: [],
isLoading: true,
page: 1,
HizmetTuru: "Tumu",
HizmetAlani: "Tumu",
Ucretlendirme: "Tumu"
};
}
handleChange = e => {
this.setState({
[e.target.name]: e.target.value
}, console.log(this.state));
}
componentDidMount() {
const db = firebase.firestore();
let docs = db.collection("Paydaslar")
console.log(this.state)
//docs = db.collection("Paydaslar").where("HizmetTuru", "==", this.state.HizmetTuru);
docs.get()
.then(snapshot => {
let data = [];
snapshot.forEach(doc => {
if (doc.data().isVisible) {
data.push(doc.data());
}
});
this.setState({ data, isLoading: false });
})
.catch(err => {
console.log("Error getting documents", err);
});
}
componentDidUpdate(){
const db = firebase.firestore();
let docs = db.collection("Paydaslar")
if(this.state.HizmetTuru != "Tumu"){docs=db.collection("Paydaslar").where("HizmetTuru", "==", this.state.HizmetTuru)}
if(this.state.HizmetAlani != "Tumu"){docs=db.collection("Paydaslar").where("HizmetAlani", "==", this.state.HizmetAlani)}
if(this.state.Ucretlendirme != "Tumu"){docs=db.collection("Paydaslar").where("Ucretlendirme", "==", this.state.Ucretlendirme)}
docs.get()
.then(snapshot => {
let data = [];
snapshot.forEach(doc => {
if (doc.data().isVisible) {
data.push(doc.data());
}
});
this.setState({ data, isLoading: false });
})
.catch(err => {
console.log("Error getting documents", err);
});
}
Таким образом, если 1 В поле установлено значение (отличается от всех (Tumu в коде), другие поля не работают.