Я хочу подключить свой сервер Apollo к моей mongoDB. Я знаю, что есть много примеров, но я застрял в части asyn c и не нашел решения или примера для этого (странно, я совершенно не прав?)
Я начал с пример из следующего. js https://github.com/zeit/next.js/tree/master/examples/api-routes-apollo-server-and-client. Но интеграция с mongodb отсутствует.
Мой код
страниц / api / graphql. js
import {ApolloServer} from 'apollo-server-micro';
import {schema} from '../../apollo/schema';
const apolloServer = new ApolloServer({schema});
export const config = {
api: {
bodyParser: false
}
};
export default apolloServer.createHandler({path: '/api/graphql'});
apollo / schema. js
import {makeExecutableSchema} from 'graphql-tools';
import {typeDefs} from './type-defs';
import {resolvers} from './resolvers';
export const schema = makeExecutableSchema({
typeDefs,
resolvers
});
apollo / resolvers. js
const Items = require('./connector').Items;
export const resolvers = {
Query: {
item: async (_parent, args) => {
const {id} = args;
const item = await Items.findOne(objectId(id));
return item;
},
...
}
}
apollo / connector. js
require('dotenv').config();
const MongoClient = require('mongodb').MongoClient;
const password = process.env.MONGO_PASSWORD;
const username = process.env.MONGO_USER;
const uri = `mongodb+srv://${username}:${password}@example.com`;
const client = await MongoClient.connect(uri);
const db = await client.db('databaseName')
const Items = db.collection('items')
module.exports = {Items}
Итак, проблема в await
в connector.js
. Я понятия не имею, как вызвать это в asyn c функции или как обеспечить MongoClient другим способом для распознавателя. Если я просто удаляю await
, он возвращает - очевидно - ожидающее обещание и не может вызвать функцию .db('databaseName')
для него.