如何正确互连 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?