Я пишу простой код на сервере graphql и nodejs с mongodb. У меня была база данных с 2 коллекциями. Звезды и фильмы. когда я запускаю этот запрос, чтобы показать мне все фильмы, я получаю следующую ошибку на моем сервере GraphQL NodeJS: «Тип MovieType.year должен быть типом вывода, но получено: undefined».
это моя схема:
const {
GraphQLSchema,
GraphQLObjectType,
GraphQLString,
GraphQLInt,
GraphQLNonNull,
GraphQLList
} = require("graphql");
const {Movie, User} = require('/home/fateme/imdb_final/db')
const starType = new GraphQLObjectType({
name: "UserType",
fields: {
name: {
type: GraphQLString,
async resolve(objId) {
const starFind = await User.findOne({ _id: objId._id})
return starFind.name
}
},
imdbId: {
type: GraphQLString,
async resolve(objId) {
const starFind = await User.findOne({ _id: objId._id})
return starFind.imdbId
}
}
}
});
const movieType = new GraphQLObjectType({
name: "MovieType",
fields: {
title: {
type: GraphQLString,
async resolve(objId) {
const movieFind = await Movie.findOne({ _id: objId._id})
return movieFind.title
}
},
year: {
type: GraphQLInt,
async resolve(objId) {
const movieFind = await Movie.findOne({ _id: objId._id})
return movieFind.year
}
},
rate: {
type: GraphQLInt,
async resolve(objId) {
const movieFind = await Movie.findOne({ _id: objId._id})
return movieFind.rating
}
},
year: {
rate: GraphQLInt,
async resolve(objId) {
const movieFind = await Movie.findOne({ _id: objId._id})
return movieFind.year
}
},
director: {
type: GraphQLString,
async resolve(objId) {
const movieFind = await Movie.findOne({ _id: objId._id})
return movieFind.director
}
},
}
});
const queryType = new GraphQLObjectType({
name: 'Query',
fields: () => ({
users: {
type: GraphQLList(starType),
async resolve() {
const allStar = await User.find({})
return allStar
}
},
movies: {
type: GraphQLList(movieType),
async resolve() {
const allMovie = await Movie.find({})
console.info(allMovie)
return allMovie
}
},
})
});
const schema = new GraphQLSchema({
query: queryType
});
module.exports = schema;





Как указывает ошибка, вы не определили тип для поля year. Вместо этого вы случайно добавили поле rate:
year: {
rate: GraphQLInt, // <-- here
async resolve(objId) {
const movieFind = await Movie.findOne({ _id: objId._id})
return movieFind.year
}
},
Просто замените rate на type, и все будет хорошо :)