Я сделал несколько перерывов и вижу, что мой оператор if выполняется правильно, но возвращаемые данные не принимают во внимание дополнительное предложение where. Обычно, если это начальный месяц, я не хочу, чтобы у него была начальная точка, и просто возвращаю все, что не завершено. После этого я хочу, чтобы он просто откатывался на месяц.
Я также убедился, что мои значения даты верны.
let endDate = moment(date).add(1, 'M').toDate()
var search = fb.ledgersCollection.where('accountId', '==', this.account.id)
.where('completed', '==', false)
.where('date', '<', endDate)
if (date != this.startDate) {
search.where('date', '>', date)
}
search.orderBy('date', 'asc').orderBy('deposit', 'desc').orderBy('name', 'asc').get().then(docs => {
docs.forEach(doc => {
let ledger = doc.data()
ledger.date = new Date(1000* doc.data().date.seconds)
ledger.id = doc.id
this.currentBalance = parseFloat(Number(this.currentBalance) + Number(ledger.amount)).toFixed(2)
ledger.balance = this.currentBalance
this.ledgerItems.push(ledger)
})
})



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Объекты запросов в Firestore неизменяемы, то есть их нельзя изменить после создания. Что вам нужно сделать, так это построить новый запрос на основе предыдущего запроса. Например:
var search = fb.ledgersCollection.where('accountId', '==', this.account.id)
.where('completed', '==', false)
.where('date', '<', endDate)
if (date != this.startDate) {
// build a new query based off the original query
search = search.where('date', '>', date)
}
Обратите внимание, что я переназначаю search новому объекту запроса, основанному на исходном поиске. Этот новый поиск будет применять все фильтры одновременно.
Так очевидно. Меня всегда беспокоят простые ошибки. Спасибо.