我正在尝试使用以下代码一次只执行 urql useQuery。但出于某种原因,每次重新渲染时都会调用它。
根据文档https://formidable.com/open-source/urql/docs/basics/queries/#pausing-usequery 这个查询应该最初在渲染时暂停,它应该只在从 React.useEffect 调用时执行山。
const [{ fetching, data, error }, reExecute] = useQuery({
query: INITIAL_CONFIG_QUERY,
pause: true
});
React.useEffect(() => {
reExecute();
}, []);
Run Code Online (Sandbox Code Playgroud)
使用 urql 仅一次执行查询的最佳方法是什么?
我正在向微服务架构师学习 API。这是有关设置的小描述
客户端请求流程:
客户端使用 JWT 令牌向微服务 1 请求 API1,该令牌将在 API 网关进行身份验证,然后从微服务 1 提供信息。这很好。
但我有一个私有 API2,客户端不应该允许它。只有内部应用程序可以使用它,但它应该可以根据客户端的另一个请求进行调用。
例如。
client request -> /API/Gateway1 (has JWT)
/API/Gateway1 -> API1 (has valid user)
API1 -> /API/Gateway2 (has valid user)
/API/Gateway2 -> API2 (has valid user)
Run Code Online (Sandbox Code Playgroud)
问题:
如何从客户端保护 API2,如果客户端伪造有效的用户标头怎么办?
我试图从基于异步运算符的数组对象中跳过一个对象。我尝试过以下情况,但出现类型错误。
尝试过的方法 1
newObjectArray = await Promise.all(objectAray.reduce(async (result, el) => {
const asyncResult = await someAsyncTask(el);
if (asyncResult) {
result.push(newSavedFile);
}
return result;
}, []));
Run Code Online (Sandbox Code Playgroud)
试过的方法2
newObjectArray = await Promise.all(objectAray.reduce(async (prevPromise, el) => {
const collection = await prevPromise;
const asyncResult = await someAsyncTask(el);
if (asyncResult) {
prevPromise.push(newSavedFile);
}
collection.push(newSavedFile);
return collection;
}, Promise.resolve([])));
Run Code Online (Sandbox Code Playgroud)
错误
'TypeError: #<Promise> is not iterable',
' at Function.all (<anonymous>)',
Run Code Online (Sandbox Code Playgroud)