Я использую Apollo-Server
и пытаюсь создать REST-запрос к IEX REST API , который возвращает данные, которые выглядят следующим образом:
{
"symbol": "AAPL",
"companyName": "Apple Inc.",
"exchange": "Nasdaq Global Select",
"industry": "Computer Hardware",
"website": "http://www.apple.com",
"description": "Apple Inc is an American multinational technology company. It designs, manufactures, and markets mobile communication and media devices, personal computers, and portable digital music players.",
"CEO": "Timothy D. Cook",
"issueType": "cs",
"sector": "Technology",
"tags": [
"Technology",
"Consumer Electronics",
"Computer Hardware"
]
}
Я использую * 1008 источники данных *.Мои typeDefs
и resolvers
выглядят примерно так:
const typeDefs = gql`
type Query{
stock(symbol:String): Stock
}
type Stock {
companyName: String
exchange: String
industry: String
tags: String!
}
`;
const resolvers = {
Query:{
stock: async(root, {symbol}, {dataSources}) =>{
return dataSources.myApi.getSomeData(symbol)
}
}
};
Файл источника данных выглядит следующим образом:
class MyApiextends RESTDataSource{
constructor(){
super();
this.baseURL = 'https://api.iextrading.com/1.0';
}
async getSomeData(symbol){
return this.get(`/stock/${symbol}/company`)
}
}
module.exports = MyApi
Я могу выполнить запрос и получить данные обратно, но этоне выполняет форматирование в массиве и выдает ошибку при выполнении запроса, например, так:
query{
stock(symbol:"aapl"){
tags
}
}
Ошибка:
{
"data": {
"stock": null
},
"errors": [
{
"message": "String cannot represent value: [\"Technology\", \"Consumer Electronics\", \"Computer Hardware\"]",
"locations": [
{
"line": 3,
"column": 5
}
],
"path": [
"stock",
"tags"
],
"extensions": {
"code": "INTERNAL_SERVER_ERROR",
"exception": {
"stacktrace": [
"TypeError: String cannot represent value: [\"Technology\", \"Consumer Electronics\", \"Computer Hardware\"]",
Данные, которые я ожидаю (технологии, бытовая электроника,и компьютерное оборудование) правильны, но не возвращаются в массив.Я попытался создать новый type
для тегов и установить его со свойством tag, но значение просто возвращает null
.
Я очень новичок в graphql, поэтому любая обратная связь приветствуется!