取得同步的最佳做法

时间:2018-09-27 12:53:35

标签: dvajs

我正在尝试获取与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 :(得分:0)

第一种方法

制作两个模型,usersprojects

那你就可以做到

*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
}

一旦有了项目数据,就可以使用用户ID过滤项目数组(考虑到您的项目具有类似project.user_id的内容),并将其显示到应用程序中。

第二种方法

您可以让后端服务器在用户对象中为用户发送项目列表。

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

我希望这是有道理的。