Map.prototype.forEach不遍历Map

时间:2019-04-26 09:33:55

标签: mysql node.js typescript sails.js

我通过Sails Model从MySQL RowDataPacket数组初始化了一个Map。然后,当控制台记录该Map时,我可以看到结果,但是当我使用Map.prototype.forEach遍历Map时,它就没有进行迭代。任何人都可以检查我在做什么错吗?

我正在使用以下技术。 Web框架:Sails: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.log(this.convertionRates);

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

我希望多次在控制台中登录Hello。但是没有输出。

1 个答案:

答案 0 :(得分:1)

this.convertionRates[ConvertionRateFromDB.code] = ConvertionRateFromDB未将条目添加到convertionRates映射中。 this.convertionRates.set(ConvertionRateFromDB.code, ConvertionRateFromDB)可以做到这一点。您的代码将对象属性添加到地图对象。

最后,您的地图为空,解释了为什么什么都没记录。