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

问题描述 投票:0回答:1

我正在尝试使用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数据不再显示...

mongodb express graphql apollo-server
1个回答
0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.