Как вернуть массив объектов в graphql ?
Я создаю API graphql, где я мог бы получить автомобиль по идентификатору, фильтровать автомобили по цвету или возвращать все автомобили, когда нет параматера.
В приведенном ниже коде получение одного объекта из массива работает, то есть когда я предоставляю идентификатор. Однако он не возвращает объекты, когда я возвращаю их внутри массива.
Я пытался распечатать запись массива до того, как он будет возвращен, но до сих пор не знаю, почему он не проходит через graphql.
schema.js файл внутри папки схемы
const graphql = require("graphql"); const { GraphQLObjectType, GraphQLString, GraphQLSchema } = graphql; let cars = [ { name: "Honda", color: "Red", id: "1" }, { name: "Toyota", color: "Blue", id: "2" }, { name: "BMW", color: "Blue", id: "3" } ]; const CarType = new GraphQLObjectType({ name: "Car", fields: () => ({ id: { type: GraphQLString }, name: { type: GraphQLString }, color: { type: GraphQLString } }) }); const RootQuery = new GraphQLObjectType({ name: "RootQueryType", fields: { cars: { type: CarType, args: { id: { type: GraphQLString }, color: { type: GraphQLString } }, resolve(parent, args) { if (args.id) { return cars.find(car => (car.id = args.id)); } if (args.color) { console.log(cars.filter(car => car.color === args.color)); //Problem here return cars.filter(car => car.color === args.color); } console.log(cars); //And Problem Here return cars; } } } }); module.exports = new GraphQLSchema({ query: RootQuery });
app.js файл
const express = require("express"); const graphqlHTTP = require("express-graphql"); const schema = require("./schema/schema"); const app = express(); app.use("/graphql", graphqlHTTP({ schema, graphiql: true })); app.listen(4000, () => { console.log("Now listening for requests on port 4000"); });
Что я уже пробовал:
Как вы можете видеть, я попытался распечатать массив прямо перед его возвратом.
Самое смешное, что массив печатается, как и ожидалось, но на переднем конце graphql он не дает мне никакого результата.
Запрос GraphQL (фильтрация по цвету)
{ cars(color:"blue") { name } }
Запрос GraphQL (попытка получить список всех автомобилей)
{ cars{ name } }
Что я получаю
{ "data": { "cars": { "name": null } } }