Я инициализировал карту из массива 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 в консоль несколько раз. Но выхода не получил.






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