【发布时间】:2021-02-02 07:07:00
【问题描述】:
我想用 apollo 做一些批量更新。我需要从节点启动批处理脚本。
例如node myscript.js
我不知道该怎么做。是否有一个简单的示例可以执行入门中描述的操作:https://www.apollographql.com/docs/react/get-started/ 但没有反应?
(我的代码在使用 react 时运行良好)
【问题讨论】:
标签: apollo apollo-client
我想用 apollo 做一些批量更新。我需要从节点启动批处理脚本。
例如node myscript.js
我不知道该怎么做。是否有一个简单的示例可以执行入门中描述的操作:https://www.apollographql.com/docs/react/get-started/ 但没有反应?
(我的代码在使用 react 时运行良好)
【问题讨论】:
标签: apollo apollo-client
这是从 node 使用 Apollo Client ver 3.x 与从 React 使用它的方法
要从节点使用它,你必须从 @apollo/client/core 导入 React 你从 @apollo/client 导入 所以在节点中初始化可以是这样的:
const STRAPIURI = "http://192.168.39.174:1337/graphql";
import fetch from 'cross-fetch';
import { ApolloClient, HttpLink, InMemoryCache } from '@apollo/client/core';
const apolloClient = new ApolloClient({
link: new HttpLink({
uri: `${STRAPIURI}`, fetch,
credentials: 'same-origin', // Additional fetch() options like `credentials` or `headers`
}),
cache: new InMemoryCache()
});
您还需要从同一位置导入 gql。
import { gql } from '@apollo/client/core';
【讨论】:
首先你需要创建一个 apollo 客户端,非常类似于 react。
检查下面的代码。
import { ApolloClient } from 'apollo-client';
import fetch from 'node-fetch';
import { createHttpLink } from 'apollo-link-http';
import { setContext } from 'apollo-link-context';
import { InMemoryCache } from 'apollo-cache-inmemory';
import config from './config';
const httpLink = createHttpLink({
uri: `${config.apiUrl}/graphql`,
fetch,
});
const authLink = setContext(() => {
const token = config.serverToken;
return {
headers: {
Authorization: token,
},
};
});
const client = new ApolloClient({
link: authLink.concat(httpLink),
cache: new InMemoryCache(),
});
export default client;
一旦客户端完成,你可以使用下面的代码来做一个突变
import gql from 'graphql-tag';
const mutation = gql(`mutation {
CreateTodo(
data: {
task: "${task}"
}
) {
id
task
}
}`);
const response = await client.mutate({mutation});
您也可以类似地使用它进行查询。我们正在使用节点获取来进行查询或变异。
如果有帮助,请告诉我。
【讨论】: