Я работаю над приложением счетов-фактур с Angular и Firebase. Мне нужно посчитать, сколько строк в настоящее время в коллекции + 1, чтобы иметь мой идентификатор счета. Проблема в том, что этот счетчик должен начинаться с 1, если у нас новый год. Я думал, что мог бы сделать что-то вроде invoices / 2019, который является просто коллекцией в коллекции, поэтому я мог легко сосчитать все строки во второй коллекции, но вы не можете сделать коллекцию в коллекции. Из-за этого я сделал следующие счета / 2019 / октябрь / id, который является коллекцией / doc / collection / doc. 2019 будет текущим годом, а октябрь будет текущим месяцем. Теперь я не знаю, как подсчитать каждый счет за текущий год для моего счетчика. Также я не уверен, является ли это даже лучшим решением.
// How I create an entry to the database
currentYear: string = this.datepipe.transform(new Date, 'yyyy');
currentMonth: string = this.datepipe.transform(new Date, 'MMMM');
this.afs.collection('invoices').doc(this.currentYear).collection(this.currentMonth).add(data);
// Currently I use the following which outputs 2019-001 and so on
this.afs
.collection('invoices')
.valueChanges()
.subscribe(res => {
this.invoiceID = res.length + 1;
const invoiceIDFormatted = ('00' + this.invoiceID).slice(-3);
this.service.form
.get('invoiceID')
.setValue(currentDateYear + '-' + invoiceIDFormatted);
});
В настоящее время это работает для счетов / идентификаторов, но мне нужно, чтобы оно работало с счетами / 2019 / october / id, что означает, что оно должно бытьчерез все месяцы.