是否可以使用 Apollo Server 在服务器端本地执行突变或查询
Posted
技术标签:
【中文标题】是否可以使用 Apollo Server 在服务器端本地执行突变或查询【英文标题】:Is it possible to execute a mutation or query locally at server side with Apollo Server 【发布时间】:2018-06-12 16:36:12 【问题描述】:我想知道。
例子:
1- 到达端点 GET /createNew
2- 我运行了一个我定义的突变:
apolloserver.mutation(mutation_query).then((response)=>res.status(200))
3- 向数据库添加一个新条目,并向客户端返回一个 JSON 字符串
这样的东西存在吗? apolloserver
对象在运行时可用吗?
我正在使用 NodeJS + Express
【问题讨论】:
【参考方案1】:我搞定了
首先我们启动对象:
import express from 'express';
import graphql from 'graphql';
const context = require('./context'); //this is the object to be passed to each resolver function
const schema = require('./schema'); //this is the object returned by makeExecutableSchema(typeDefs, resolvers)
const app = express();
然后,例如,如果我们想在端点 GET /execute
上运行查询
app.get('/execute', function(req, res)
var query = `
query myQueryTitle
queryName
_id,
...
`;
graphql(schema, query, null, context)
.then((result) =>
res.json(result.data.queryName);
);
)
所以每当我们想要运行查询或突变时,我们调用 graphql
传递 schema
、requestString
/query
和 context
对象
这可能与graphqlExpress
的实例共存
【讨论】:
虽然这可行,但它实际上并没有通过 Apollo Server 执行,而是使用了 graphql.js 中的 execute 方法。只要您不使用任何 Apollo 中间件(例如 Apollo Engine)就可以了,因为它们不会在这种情况下运行。 这个问题有解决方案吗@PetrBela - 我正在研究这样的解决方案 - 我们正在使用 Apolloe Server ?以上是关于是否可以使用 Apollo Server 在服务器端本地执行突变或查询的主要内容,如果未能解决你的问题,请参考以下文章
使用替代 GraphQL 客户端连接到 Apollo Server
是否可以为 Apollo Server 附带的 GraphQL Playground 定义 HTTP 标头?
Apollo-server-express 内省已禁用,但仍然可以通过 websocket 连接