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

Posted

技术标签:

【中文标题】如何正确互连 Apollo Server/mongodb/express?【英文标题】:How to properly interconnect Apollo Server / mongodb / express? 【发布时间】:2020-09-18 12:55:51 【问题描述】:

我正在尝试使用 express 来提供我的静态图像。我试图在下面的代码中将 express 与 Apollo Server 集成。不幸的是,这样做时,mongodb数据不再显示在前端。我的代码是否有任何问题,或者 ApolloServer/Mongodb/Express 不兼容?

作为旁注,当我删除所有 express 内容并简单地返回 server.listen() 等时,它工作得很好(所以我意识到断开连接是通过 express 实现)

index.js

const  ApolloServer, PubSub  = require("apollo-server-express");
const mongoose = require("mongoose");

const  createWriteStream, existsSync, mkdirSync  = require("fs");
const path = require("path");
const express = require("express");

const typeDefs = require("./graphql/typeDefs");
const resolvers = require("./graphql/resolvers");
const  MONGODB  = require("./config.js");

const pubsub = new PubSub();

//server instance
const server = new ApolloServer(
  typeDefs,
  resolvers,
  context: ( req ) => ( req, pubsub ),
);

const app = express();
app.use("/images", express.static(path.join(__dirname, "../images")));
server.applyMiddleware( app );

mongoose
  .connect(MONGODB,  useNewUrlParser: true, useUnifiedTopology: true )
  .then(() => 
    console.log("MongoDB Connected");
    return app.listen(5000, () => 
      console.log(`????  Server ready at http://localhost:5000/`);
    );
  )

【问题讨论】:

数据没有显示在前面可能有多种原因。您的请求是否有错误或只是没有挂断? 【参考方案1】:

默认情况下,apollo-server-express/graphql 公开您的 GraphQL 端点,而不是像apollo-server 那样在/ 公开。您可以通过向applyMiddleware 提供path 选项来自定义此行为。但是,在这种情况下,我不会将路径更改回 / —— 而只是修改您的客户端代码以将请求发送到正确的 URL。

【讨论】:

以上是关于如何正确互连 Apollo Server/mongodb/express?的主要内容,如果未能解决你的问题,请参考以下文章

使用 Apollo 和 React 捕获身份验证失败后如何正确重定向

如何使用 Apollo 在 Nuxt 生成的动态页面中正确填充页眉?

如何正确输入 Apollo Client defaultOptions?

删除带有突变的项目时如何正确修改Apollo缓存

如何在 React Native 中正确地将 Apollo 客户端连接到 Redux

如何在 react-apollo graphql 查询中正确使用动态变量?