Возвращение приведения типа из запроса БД Firebase к итерируемому типу - PullRequest
0 голосов
/ 30 марта 2019

Что я пытаюсь сделать

Я сейчас настраиваю свои функции Firebase для БД, для этого я использую TypeScript. Я пытаюсь получить узел из моей базы данных. Узел представляет собой карту (т. Е. Карту строки, bool в Java). Проблема в том, что после получения моего «теста» узла из моей БД я пытаюсь перебрать его членов, но я получаю ошибку

Ошибка

TypeError: повестки дня. ForEach не является функцией

на объекте. (\ Firecast \ функции \ Lib \ index.js: 32: 16)

в Generator.next ()

при выполнении (\ firecast \ functions \ lib \ index.js: 4: 58)

at process._tickCallback (внутренняя / process / next_tick.js: 68: 7)

Мое поселение

Вот как у меня настроена БД: (Извините, idk, почему встраивание изображений не работает, я поставлю ссылку)

Ссылка на изображение: https://pasteboard.co/I7KogY2.png

Это моя полная функция:

export const getTest=
functions.https.onRequest(async (request,response)=>{
    try{
        const GlobalCalendar= await admin.firestore().doc("Calendar/GlobalCalendar").get()
        const agenda=GlobalCalendar.data()!.test
        const hours: any[]=[] 
        agenda.forEach((weekday: any) => {
            hours.push(weekday)
        }); 
        response.send(agenda);
    }
    catch(error){
        console.log(error)
        response.status(500).send(error)
    }
})

Моя попытка это исправить

Если я закомментирую

// постоянные часы: любые [] = []

// повестки дня. ForEach ((день недели: любой) => {

// hours.push (день недели)

//});

он успешно отправит карту «Повестка дня», и я получу следующее:

{ "четыре": правда, "один": правда, «три»: правда, "два": правда }

Заключение

Итак, я знаю, что я правильно получаю «тест» узла из базы данных, но проблема заключается в переборе этого объекта. Похоже, что бы ни был тип «повестки дня», у него нет функции «forEach». Я следовал инструкциям из видео на Firebase на YouTube, и они проделали ту же работу, но в отличие от моей, они работали отлично.

Ссылка на видео: https://www.youtube.com/watch?v=Jr7pDZ1RAUg&list=PLl-K7zZEsYLkPZHe41m4jfAxUi0JjLgSM&index=6

Мой ожидаемый результат - возможность проходить по элементам в переменной «повестки дня», которая является моим узлом «тест» в изображении.

Большое спасибо за ваше время!

1 Ответ

0 голосов
/ 30 марта 2019

Поле test в вашей базе данных является объектом, а не массивом. Вы не можете перебрать объект с помощью forEach - у него не будет ни этого метода, ни какого-либо итератора. Если вы хотите перебрать ключи и значения объекта, то попробуйте один из этих вариантов .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...