Когда я удаляю if-stament, я получаю данные, и doc.data() работает, но мне нужно проверить тип «добавлено», чтобы я не выводил существующие данные снова и снова.
С оператором if я получаю это сообщение об ошибке:
Uncaught TypeError: doc.data is not a function
async getChats(callback){
const roomFilter = query(colRef, where("room", "= = ", this.room));
const ordered = query(roomFilter, orderBy('created_at'));
this.unsub = onSnapshot(ordered, (snapshot) => {
let items = []
snapshot.docChanges().forEach(doc => {
if (doc.type === 'added'){
items.push({ ...doc.data(), id: doc.id })
console.info(items);
callback(items);
}})
});



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


snapshot.docChanges().forEach(doc => {
Переменная, которую вы назвали doc, — это больше, чем просто документ. Он содержит дополнительную информацию об изменении. С выбранным вами именем переменной вам нужно сделать:
items.push({ ...doc.doc.data(), id: doc.doc.id })
Я бы подумал о том, чтобы переименовать его, может быть, чтобы "изменить"
snapshot.docChanges().forEach(change => {
if (change.type === 'added') {
items.push({ ...change.doc.data(), id: change.doc.id })
console.info(items);
callback(items);
}
})