【发布时间】:2022-03-10 23:08:41
【问题描述】:
我有一个 mongodb 服务器设置,它在运行以下命令时从端口 3000 开始
npm run start
我也是一个 graphql 服务器,它在运行以下命令时从端口 4000 开始
npm run start-graphql
我的 package.json 的脚本如下
"scripts": {
"start": "nodemon server.js",
"start-graphql": "nodemon graphqlserver.js",
"test": "echo \"Error: no test specified\" && exit 1"
},
server.js
require('dotenv').config();
const express = require('express');
const app = express();
const mongoose = require('mongoose');
mongoose.connect(process.env.DATABASE_URL);
const db = mongoose.connection;
db.on('error', (err) => console.log(err));
db.once('open', () => {
console.log("Backend Database connected");
});
app.use(express.json({ limit: '2mb'}));
const photosRouter = require('./routes/photos');
app.use('/images', photosRouter)
app.listen(3000, () => {
console.log('Server started at port 3000');
})
graphqlserver.js
const express = require('express');
const path = require('path');
const express_graphql = require('express-graphql').graphqlHTTP;
const { loadSchemaSync } = require('@graphql-tools/load');
const { GraphQLFileLoader } = require('@graphql-tools/graphql-file-loader');
const { addResolversToSchema } = require('@graphql-tools/schema');
const getResolvers = require('./graphql/resolvers');
// GraphQL schema
const combinedSchema = loadSchemaSync(
path.join(__dirname, './graphql/schemas/*.graphql'),
{
loaders: [new GraphQLFileLoader()],
}
);
const schema = addResolversToSchema({
schema: combinedSchema,
resolvers: Object.assign({}, getResolvers())
});
// Create an express server and a GraphQL endpoint
const app = express();
app.use('/graphql', express_graphql({
schema: schema,
graphiql: true
}));
app.listen(4000, () => console.log('Express GraphQL Server Now Running On localhost:4000/graphql'));
当我通常通过邮递员或 curl 调用其余 api 时,它会按预期返回响应。
例如:http://localhost:3000/images 返回一个对象数组
但是当我想通过 graphql 服务器(在端口 4000 上运行)调用(使用 axios)相同时, 我得到的响应为空。 我不知道为什么会这样。 请检查以下屏幕截图以供参考
注意:为了更清楚,请查看代码库链接 https://github.com/yaswankar/G-photos-backend
任何帮助将不胜感激。
提前致谢
请求:请通过投票来提供帮助,以便更好地传达给那些可以提供帮助的人。
编辑:
【问题讨论】:
-
您基本上是在问“为什么我的项目不起作用”,这会使问题过于宽泛。你做了什么来调试这个问题?例如,请求是否到达了正确的解析器?
-
我同意,但那是因为我不知道发生了什么。我试着检查这是否是一个 cors 问题等,但没有运气。网络选项卡中的一切似乎都很好。但它无法达到graphql的解析器功能
-
FWIW,你没有
photo的解析器。 -
有一个,请查看仓库
-
我修好了谢谢你的帮助@robertklep
标签: javascript node.js mongodb graphql express-graphql