我正在尝试使用express投放静态图片。我试图在下面的代码中将express与Apollo Server集成。不幸的是,这样做时,mongodb数据不再显示在前端。我的代码有问题吗?还是ApolloServer / Mongodb / Express不兼容?
作为一个旁注,当我删除所有表达内容并仅返回server.listen()等时,它就可以很好地工作(因此,我意识到断开与表达实现有关]]
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/`);
});
})
我正在尝试使用express投放静态图片。我试图在下面的代码中将express与Apollo Server集成。不幸的是,这样做时,mongodb数据不再显示...
默认情况下,apollo-server-express
将您的GraphQL端点公开在/graphql
,而不是像/
那样公开apollo-server
。您可以通过为path
提供applyMiddleware
选项来自定义此行为。但是,在这种情况下,我不会将路径更改回/
,而只是修改您的客户端代码以将请求发送到正确的URL。