Map.prototype.forEach не перебирает Map

Я инициализировал карту из массива MySQL RowDataPacket, который я получаю через Sails Model. Затем, когда консоль регистрирует эту карту, я вижу результаты, но когда я перебираю карту с помощью Map.prototype.forEach, она не повторяется. Кто-нибудь может проверить, что я делаю неправильно?

Я использую следующую технологию. Веб-фреймворк: Паруса: 1.1.0 Время выполнения: NodeJs: v8.16.0 Машинопись Javascript: es6 База данных: MySql: 5.6

    import { Currency } from 'typings/finance';

    import sails from "sails"
    //Sails Model
    const Currency = sails.models.currency

    export class CurrencyConverter {
        private : convertionRates Map<string, Currency>

        public constructor() {
            //Get a new Map
            this.convertionRates = new Map<string, Currency>()
        }

        public async inIt() {
                //Get Data through sails model object form MySql database
                const ConvertionRatesFromDB: Currency[] = await Currency.find()
                //Update this.convertionRates Map
                for (let ConvertionRateFromDB of ConvertionRatesFromDB) {
                    this.convertionRates[ConvertionRateFromDB.code] = ConvertionRateFromDB
                }

                //Data shows here :/
                console.info(this.convertionRates);

                //But nothing logs here :(
                this.convertionRates.forEach(() => console.info("Hello"))
        }    
}

Я ожидал войти Hello в консоль несколько раз. Но выхода не получил.

Это была опечатка. Я отредактировал это. Спасибо за ваши выводы.

Baya Weaver 27.04.2019 09:09
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
1
1
187
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

this.convertionRates[ConvertionRateFromDB.code] = ConvertionRateFromDB не добавляет запись на convertionRates карту. this.convertionRates.set(ConvertionRateFromDB.code, ConvertionRateFromDB) сделал бы это. Ваш код добавляет свойство объекта к объекту карты.

Итак, в конце концов, ваша карта пуста, что объясняет, почему ничего не регистрируется.

Спасибо за ваше решение.

Baya Weaver 26.04.2019 11:50

Другие вопросы по теме