小编cco*_*der的帖子

redux 刷新令牌中间件

我有一个中间件,可以在下一个操作运行之前转到刷新令牌,然后在访问令牌过期时运行另一个操作。

但是,如果我一次发出多个请求并且访问令牌已结束,我将尝试获取与请求一样多的刷新令牌。我正在检查状态中的 isLoading 属性以防止这种情况。但是请求之后,isLoading值在reducer中为true,在中间件中好像为false,所以一次又一次的请求。

我在 fetching_refresh_token 操作中发送 refreshTokenPromise,但我从来没有得到 state.refreshTokenPromise,它总是未定义的。

我肯定对国家有问题。

所以这是我的问题,如何访问中间件中不断变化的状态值?

刷新令牌中间件:(此版本多次命中端点)

import { AsyncStorage } from 'react-native';
import { MIN_TOKEN_LIFESPAN } from 'react-native-dotenv';
import moment from 'moment';
import Api from '../lib/api';
import {
  FETCHING_REFRESH_TOKEN,
  FETCHING_REFRESH_TOKEN_SUCCESS,
  FETCHING_REFRESH_TOKEN_FAILURE } from '../actions/constants';

export default function tokenMiddleware({ dispatch, getState }) {
  return next => async (action) => {
    if (typeof action === 'function') {
      const state = getState();
      if (state) {
        const expiresIn = await AsyncStorage.getItem('EXPIRES_IN');
        if (expiresIn && isExpired(JSON.parse(expiresIn))) {
          if (!state.refreshToken.isLoading) …
Run Code Online (Sandbox Code Playgroud)

redux redux-thunk redux-middleware

6
推荐指数
1
解决办法
7898
查看次数

我应该如何设计用户拦截系统?

我创建了一个小社交网站,其中包含用户生成的内容。如果用户不喜欢自己发布的内容,他们应该可以选择阻止对方。

所以我使用 postgresql 并且有三个简单的表。

Table User
id (pk)  | user_name
1       | a
2       | b
3       | c

Table Post
id (pk)  | user_id (fk)
1       | 1
2       | 3
3       | 2
4       | 2

Table Block
id (pk) | blocker_id (fk)  | blocked_id (fk)
1       | 1              | 2
2       | 2              | 1
Run Code Online (Sandbox Code Playgroud)

顺便说一句,正如您所看到的,我使用双向阻止,因为我不希望如果 user1 阻止 user2,则 user2 也不应该看到 user1 的帖子。

我写了一个sql:

SELECT * FROM Post p INNER JOIN Block b
ON p.user_id = b.blocker_id …
Run Code Online (Sandbox Code Playgroud)

postgresql database-design

1
推荐指数
1
解决办法
2685
查看次数