我需要从服务器上运行的cron作业中调用一个突变。我发现了这个SO的帖子,但公认的答案是没有办法做到。
graphql-server是graphql核心函数的网络封装器。如果你不想在网络上使用它,你可以单独运行它。
import scheme from './scheme'; const query = `{ me { name } }`; const result = graphql(scheme, query); console.log(result);
函数文档可以找到 此处
这看起来很不错! 这是2020年的最佳实践方法吗?
是的,如果你能访问 GraphQLSchema
对象,那么最简单的方法就是在GraphQL服务器上使用 图形语言 的函数导出的。graphql
模块。注意,你应该等待返回的Promise来访问结果。
async function run () {
const { data, errors } = await graphql(
schema,
query,
rootValue,
context,
variables
)
}
然而,你也可以通过网络向服务器本身发出请求 -- 如果服务器在同一台主机上,你只需使用 localhost
或 127.0.0.1
. 在这种情况下,你可以使用 axios
, request
或任何其他HTTP客户端库的Node.js脚本。您也可以只使用 curl
来直接在bash脚本或curl命令中进行请求。
我也是刚刚发现这个方法。可以直接在服务器上创建一个Apollo客户端。
export const getApolloServerClient = () =>
new ApolloClient({
ssrMode: true,
cache: new InMemoryCache(),
link: new SchemaLink({ schema }),
});