我沒有找到任何解決方案。我已經問過一個問題。但沒有找到解決方案。我已經用apollo-server-express.
我創建了三個檔案apollo.js,app.js和server.js.
在 app.js 我寫 -
const express = require("express");
const cors = require("cors");
//App
const app = express();
app.use(express.json({limit: '50mb'}))
app.use(cors());
module.exports = app;
在 apollo.js-
// Packages
const {ApolloServer} = require("apollo-server-express");
const Dataloader = require("dataloader");
//TypeDefs & Resolvers
const typeDefs = require("./TypeDefs/main");
const resolvers = require("./Resolvers/main");
//Authorizations
const {Token} = require("./Authorizations/Token");
//Loaders
const loaders = require("./Loaders/main");
const apolloServer = new ApolloServer({
typeDefs,
resolvers,
context: async ({req, connection}) => {
await Token(req);
return {
reqUserInfo: req.user
}
},
});
module.exports = apolloServer;
最后,我在 server.js 中創建了快速服務器
//Packages
require("dotenv/config");
const mongoose = require("mongoose");
const {graphqlUploadExpress} = require("graphql-upload");
//App & ApolloServer
const app = require("./app");
const apolloServer = require("./apollo");
async function startServer() {
app.use(graphqlUploadExpress())
await apolloServer.start();
apolloServer.applyMiddleware({app, path: '/graphql'});
app.use("/", (req, res) => {
res.send("Welcome to tradewatch platform")
})
}
//StartServer
startServer();
mongoose.connect(process.env.MONGODB_LOCAL_URL)
.then(() => console.log("MongoDB Connected Successfully!"))
.catch((err) => console.log("MognoDB Connetion Failed!"));
//Server Creations
const port = process.env.PORT || 3001;
const httpServer = app.listen(port, () => {
console.log(`App is running on port ${port}`);
console.log(`GraphQl EndPoint path: /graphql`);
});
現在我想在這個專案中添加 graphql 訂閱。我該如何添加這個。我已經安裝subscriptions-transport-ws和@graphql-tools/schema. 請說我是否需要安裝更多軟體包。
**** 我的問題是,我應該在這 3 個檔案中更改哪些內容。請幫我。
uj5u.com熱心網友回復:
沒什么大不了的,你只需要改變一些東西。正如您要添加的graphql-subscription那樣,您還需要在旁邊安裝它subscriptions-transport-ws并且@graphql-tools/schema您已經安裝了它。只需再安裝一個即可graphql-subscriptions。
npm i graphql-subscriptions
在app.js你不需要改變任何東西。
在apollo.js-
// Packages
const {ApolloServer} = require("apollo-server-express");
const Dataloader = require("dataloader");
// Added Newly
const {makeExecutableSchema} = require("@graphql-tools/schema");
//TypeDefs & Resolvers
const typeDefs = require("./TypeDefs/main");
const resolvers = require("./Resolvers/main");
//Authorizations
const {Token} = require("./Authorizations/Token");
//Loaders
const loaders = require("./Loaders/main");
// Add Executeable Schema
const schema = makeExecutableSchema({typeDefs, resolvers});
const apolloServer = new ApolloServer({
schema, // Remove TypeDefs and Resolvers and add schema
context: async ({req}) => { // Remove connection
await Token(req);
return {
reqUserInfo: req.user
}
},
});
module.exports.apolloServer = apolloServer;
module.exports.Schema = schema
然后我server.js——
//Packages
require("dotenv/config");
const mongoose = require("mongoose");
const {graphqlUploadExpress} = require("graphql-upload");
//Add new Packages
const {createServer} = require("http"); // For creating server
const {subscribe, execute} = require("graphql");
const {SubscriptionServer} = require("subscriptions-transport-ws");
//App & ApolloServer
const app = require("./app");
const {apolloServer, Schema} = require("./apollo"); // Import Schema as well
async function startServer() {
app.use(graphqlUploadExpress())
await apolloServer.start();
apolloServer.applyMiddleware({app, path: '/graphql'});
app.use("/", (req, res) => {
res.send("Welcome to tradewatch platform")
})
}
//StartServer
startServer();
mongoose.connect(process.env.MONGODB_LOCAL_URL)
.then(() => console.log("MongoDB Connected Successfully!"))
.catch((err) => console.log("MognoDB Connetion Failed!"));
//Server Creations
const port = process.env.PORT || 3001;
const server = createServer(app);
server.listen(port, () => {
new SubscriptionServer({
execute,
subscribe,
schema: Schema,
}, {
server: server,
path: '/tradewatch',
});
console.log(`App is running on port ${port}`);
console.log(`GraphQl EndPoint path: /graphql`);
});
而已。非常感謝。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/428895.html
標籤:表示 图形 阿波罗服务器 express-graphql
下一篇:使用“while(have_posts()):the_post();”時wordpress中category.php頁面中的回圈問題
