Запрос Firebase — не удается поместить данные документа в массив

#javascript #firebase #google-cloud-firestore

# #javascript #огневая база #google-облако-firestore

Вопрос:

Я замечаю, что последний документ дважды помещается в массив, но первый документ вообще не вставляется. Что дает? Так что, оказывается, это не проблема с датой, я думаю, что с запросом что-то не так

  let obj = {}
 let items = []
db.collection('customer').doc(id).collection('appointments').get().then((snapshot) => {
          snapshot.forEach((item) => {
            let data = item.data()
            console.log(item.id)
            obj.start = data.start.toDate()
            obj.end = data.end.toDate()
            obj.title = data.title
            obj.desc = data.desc
            //console.log(date)
            items.push(obj)  
            //console.log(items.length)   
          })
 

Ответ №1:

Из того, что я могу предположить, вы используете ссылку на объект для отправки в массив. Всякий раз, когда этот объект изменяется, все ссылки на этот объект в этом массиве автоматически изменяются. Таким образом, вы можете увидеть, что независимо от количества элементов, которые вы нажимаете, все они будут последними данными документа.

вы можете попробовать переместить

 let obj = {}
 

Для

 >let obj = {}
let data = item.data()
 

здесь, внутри цикла.

Дайте мне знать, если это сработает!!

Комментарии:

1. Ага. Это сделало свое дело. Я думаю, это потому, что объекты передаются по ссылке. Спасибо

2. Ты уже пришел! 🙂

3. Привет, если мой ответ решил вашу проблему, не могли бы вы пометить его как принятый? Или прокомментируйте иным образом (например, ошибки)