【问题标题】:Map.prototype.forEach not iterating over MapMap.prototype.forEach 不迭代 Map
【发布时间】:2019-09-15 19:09:37
【问题描述】:

我从通过 Sails 模型获得的 MySQL RowDataPacket 数组初始化了一个 Map。然后,当控制台记录该 Map 时,我可以看到结果,但是当我使用 Map.prototype.forEach 迭代 Map 时,它没有迭代。谁能检查我做错了什么?

我正在使用以下技术。 网络框架:帆: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。但是没有输出。

【问题讨论】:

  • 输入错误。我编辑了那个。感谢您的发现。

标签: mysql node.js typescript sails.js


【解决方案1】:

this.convertionRates[ConvertionRateFromDB.code] = ConvertionRateFromDB 没有向convertionRates 映射添加条目。 this.convertionRates.set(ConvertionRateFromDB.code, ConvertionRateFromDB) 会这样做。您的代码将对象属性添加到地图对象。

所以最后你的地图是空的,解释为什么没有记录。

【讨论】:

  • 感谢您的解决方案。
猜你喜欢
  • 2016-10-08
  • 1970-01-01
  • 2021-05-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-20
  • 2011-09-15
相关资源
最近更新 更多