我通过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
。但是没有输出。
答案 0 :(得分:1)
this.convertionRates[ConvertionRateFromDB.code] = ConvertionRateFromDB
未将条目添加到convertionRates
映射中。 this.convertionRates.set(ConvertionRateFromDB.code, ConvertionRateFromDB)
可以做到这一点。您的代码将对象属性添加到地图对象。
最后,您的地图为空,解释了为什么什么都没记录。