, если вы используете angularjs & amp; aspnet / mvc, чтобы получить json-файлы, вы должны разрешить тип mime в web config
blockquote><staticContent> <remove fileExtension=".json" /> <mimeMap fileExtension=".json" mimeType="application/json" /> </staticContent>
Я пытался повторить его, не используя Map.prototype.forEach
, но я не смог найти способ, который скомпилировал бы, хотя я нашел много примеров. Оказывается, мне пришлось обновить цель до es6
из es5
и включить downlevelIteration
в моем файле tsconfig.json
. Затем он скомпилирован.
Затем я реструктурировал блок следующим образом:
async getExportStats() {
return await this.queryMongo();
}
private async queryMongo() {
const exportStats: Object[] = [];
for (const [key, repo] of this.mongoRepos.entries()) {
await repo.connect();
const queryResult = await repo.getExportStats();
exportStats.push(...queryResult);
}
return exportStats;
}
Это решило проблему.
Не await
в цикле for
. Если вы хотите улучшить пропускную способность, используйте Array.prototype.map()
и Promise.all()
для одновременного подключения к каждому хранилищу и запроса ваших данных. Наконец, используйте Array.prototype.flat()
, чтобы распределить каждый из результатов в одномерный массив объектов, который возвращается из коллекции результатов запроса.
async getExportData() {
const queryResults: Object[][] = await Promise.all(
Array.from(this.mongoRepositories).map(async ([key, repo]) => {
await repo.connect();
const queryResult: Object[] = await repo.getData();
repo.close();
return queryResult;
})
);
return queryResults.flat();
}