соедините сервер apollo с mongodb mongoos - PullRequest
0 голосов
/ 18 сентября 2018

Я пытаюсь подключить apollo-сервер с моим mongodb на mlab (я тоже пытался с моим локальным mongo).Я могу подключиться к БД нормально, хотя ничего не возвращается при тестировании с запросом graphql.Я просто не могу понять, как на самом деле получить данные из БД.Я использую последнюю версию apollo-server-express.

Я собрал это из различных учебников и документов, но не могу найти четкого ответа на мою проблему.Вероятно, упускает что-то очень очевидное.

Server.js

import express from 'express';
import { ApolloServer, gql } from 'apollo-server-express';
import Mongoose from 'mongoose';

import { Post } from './models/Post';

const app = express();

Mongoose.Promise = global.Promise;

Mongoose.connect('mongodb://<username>:<pw>@ds151282.mlab.com:51282/groupin', { useNewUrlParser: true })
  .then(()=> console.log('DB connected'))
  .catch(error => console.log(error))

const typeDefs = gql`
  type Post {
    title: String
    description: String
    author: String
    url: String
  }
  type Query {
    allPosts: [Post]
  }
`;

const resolvers = {
  Query: {
    allPosts(parent, args) {
      return Post.find({})
    }
  }
};


const apollo = new ApolloServer({
  typeDefs, 
  resolvers,
  context: ({req}) => ({ Post })
});

apollo.applyMiddleware({ app })

app.listen(4000, () => {
  console.log(`? Server ready at http://localhost:4000${apollo.graphqlPath}`);
});

Post.js

import Mongoose from 'mongoose';

const PostSchema = {
  title: String,
  description: String,
  author: String,
  url: String
};

const Post = Mongoose.model('Post', PostSchema);
export { Post };

1 Ответ

0 голосов
/ 04 октября 2018

Попробуйте использовать схему мангуста вместо простого объекта

Post.js

import Mongoose from 'mongoose';

const PostSchema = new Mongoose.Schema({
  title: String,
  description: String,
  author: String,
  url: String
});

const Post = Mongoose.model('Post', PostSchema);
export { Post };
...