将 apollo 服务器与 mongodb mongoose 连接

Posted

技术标签:

【中文标题】将 apollo 服务器与 mongodb mongoose 连接【英文标题】:connect apollo server with mongodb mongoos 【发布时间】:2019-02-22 06:11:07 【问题描述】:

我正在尝试将 apollo-server 与 mlab 上的 mongodb 连接(我也尝试使用本地 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】:

尝试使用猫鼬模式而不是普通对象

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 ;

【讨论】:

以上是关于将 apollo 服务器与 mongodb mongoose 连接的主要内容,如果未能解决你的问题,请参考以下文章

如何正确互连 Apollo Server/mongodb/express?

Apollo Angular 无法从 GraphQL/MongoDB 获取数据

如何使用 Mongodb 或 Mongoose 查询并使用 javascript 打印?

MongoDB简介

当graphQL的查询从mongodb返回空数据时,你应该检查啥?

MongoDB、Mongoose 和 Apollo GraphQL 在文档中定义 _id 类型