Лучшая практика для получения синхронизации - PullRequest
0 голосов
/ 27 сентября 2018

Я пытаюсь получить модель User, которая имеет отношение к Projects.Вот мой models/user.js

 *fetchUser({ payload, callback }, { call, put }) {
      const user = yield call(queryUser, payload);
      yield put({
        type: 'setCurrentUser',
        payload: user,
      });
      if (callback) callback();
    },

Какая лучшая практика?Где мне вызвать функцию queryProjects?Может быть, ниже этой линии?

const user = yield call(queryUser, payload);
const projects = yield call(queryProjects, user); // new api call

1 Ответ

0 голосов
/ 22 октября 2018

Первый подход

Сделайте две модели, users & projects

Затем вы можете сделать это

*fetchUser({ payload, callback }, { call, put }) {
      const user = yield call(queryUser, payload);
      yield put({
        type: 'setCurrentUser',
        payload: user,
      });
      yield put({type: 'projects/fetchByUserId', payload: user.id});
    },

Inside your `projects` model.

*fetchByUserId({payload){
    // do ajax call
}

Как только у вас есть данные для проектов, вы можетеотфильтруйте массив проекта по идентификатору пользователя (учитывая, что в вашем проекте есть что-то вроде project.user_id) и покажите их в приложение.

Второй подход

Ваш внутренний сервер может отправить список проектов дляпользователь в объекте пользователя.

{
    id: 1,
    username: "foo",
    projects: [
        {id: 1},
        {id: 2}
        {id: 3}
    ]
}

Надеюсь, это имеет смысл.

...