mysql - Map.prototype.forEach 不遍历 Map

标签 mysql node.js typescript sails.js

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

我正在使用以下技术。 网络框架: sails :1.1.0 运行时:NodeJs:v8.16.0 typescript 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。但是没有输出。

最佳答案

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

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

关于mysql - Map.prototype.forEach 不遍历 Map,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55864739/

相关文章:

node.js - 在 Angular CLI 应用程序中安装 express 时出现 "ENOTEMPTY: directory not empty, rmdir ....."错误。

php - PHP 中 MySQL 十进制值的类型

php - 如何从 mysql 中显示一个 PHP 变量的所有结果?

javascript - 如何使 Express 中的模块(例如 bcrypt)全局可用?

node.js - 捕获部分node.js路由

typescript - 如何在 TypeScript 接口(interface)对象中定义可选数据?

php - 你如何为 Laravel 中是否存在记录设置 bool 值?

php - Symfony 无法执行 Doctrine Schema 更新

javascript - 有没有办法让 JS 引擎加载一个 .js 文件而不显式地从它导入一些东西?

typescript - 为什么 `Error:(3, 1) TS1238:Unable to resolve signature of class decorator when called as an expression`错误