AlphaVantage API имеет пробелы и точки в ключах.Официального документа для API не существует, хотя вы можете увидеть его в демонстрационном URL-адресе
https://www.alphavantage.co/query?function=TIME_SERIES_INTRADAY&symbol=MSFT&interval=5min&apikey=demo
В своем приложении Typescript я создал структуры данных для этого (я рад за всехскопировать и использовать их - возможно, после того, как будет найдено решение моего вопроса):
export class MetaData {
'1. Information': string
'2. Symbol': string
'3. Last Refreshed': string
'4. Output Size': string
'5. Time Zone': string
constructor(one, two, three, four, five) {
this['1. Information'] = one
this['2. Symbol'] = two
this['3. Last Refreshed'] = three
this['4. Output Size'] = four
this['5. Time Zone'] = five
}
}
export interface TimeSeries {
[date: string]: {
'1. open': string;
'2. high': string;
'3. low': string;
'4. close': string;
'5. volume': string;
}
}
export interface AlphaVantage {
'Meta Data': MetaData;
'Time Series (Daily)'?: TimeSeries;
'Time Series (Weekly)'?: TimeSeries;
}
Я вызываю API, используя alphavantage
из NPM, и неявно приводим его к моему AlphaVantage
:
const av: AlphaVantage = await alpha.data.weekly(options.stocks, 'compact', 'json')
А затем (возможно, после некоторого массажа и т. Д.) Я сохраняю его в коллекции MongoDB:
const doc = await this.model.findByIdAndUpdate(proxyModel._id, proxyModel)
(ProxyModel - это DTO, используемый для определения ключей базы данных, таких как дата, символ акции и т. Д... Одним из полей являются данные AlphaVantage).
Это должно сериализовать данные и выдает ошибки с:
key 1. Information must not contain '.'
Есть ли простой способ справиться с этим.Мой выбор - создать эквивалентные объекты без пробелов:
export interface TimeSeries {
[date: string]: {
'1_open': string;
'2_high': string;
'3_low': string;
'4_close': string;
'5_volume': string;
}
}
И затем привести к этому.В этом случае предоставьте сопоставление ...
Я вижу, как я сам создаю реализацию.Однако прежде чем перейти к этому, я хотел бы услышать о любых идеях, как лучше всего справиться с этой структурой данных.