【发布时间】:2020-09-28 22:32:16
【问题描述】:
我有这个简单的 GraphQL Apollo 服务器在一个文件中工作,但在将架构和解析器“模块化”到自己的文件时,我无法让它工作。
/index.js
require('dotenv').config()
const { MongoClient } = require('mongodb')
const { ApolloServer, makeExecutableSchema } = require('apollo-server')
const { Query } = require('./resolvers/Query')
// database connection
MongoClient.connect(process.env.DB_URL, {
poolSize: 25,
useUnifiedTopology: true,
wtimeout: 2500
}).catch(error => {
console.log('Error connecting to MongoDB.', error.stack)
process.exit(1)
}).then(async client => {
console.log(`Connected to database: ${process.env.DB_NAME}`)
const dbConnection = client.db(process.env.DB_NAME)
const resolvers = {
Query
}
const schema = makeExecutableSchema({
typeDefs: './schema.graphql',
resolvers
})
const server = new ApolloServer({
schema: schema
})
server.listen().then(({ url }) => {
console.log(`Server ready at ${url}.`)
})
})
/schema.graphql
type CourseType {
_id: String!
name: String!
}
type Query {
courseType(_id: String): CourseType
courseTypes: [CourseType]!
}
/resolvers/Query.js
const { ObjectId } = require('mongodb')
const courseTypesCollection = dbConnection.collection(process.env.DB_COLLECTION_COURSE_TYPES)
const Query = {
courseType: async (root, { _id }) => {
return courseTypesCollection.findOne(ObjectId(_id))
},
courseTypes: async () => {
return courseTypesCollection.find({}).toArray()
}
}
module.exports = {
Query
}
当我尝试运行 index.js 文件时,我收到错误:UnhandledPromiseRejectionWarning: GraphQLError: Syntax Error: Cannot parse the unexpected character "."。这似乎我没有正确加载/使用模式文件。如果apollo-server 可以自行处理,我希望在不添加更多库的情况下使其正常工作。
【问题讨论】:
-
请一次只问一个问题。您的第二个问题与第一个问题无关,应单独发布。
-
@TalZ 抱歉,第二个问题已删除。
标签: node.js mongodb graphql apollo apollo-server