首页 > 解决方案 > 获取同步的最佳实践

问题描述

我试图获得UserProjects. 这是我的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

标签: dvajs

解决方案


第一种方法

制作两个模型,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
}

获得项目数据后,您可以使用用户 ID 过滤项目数组(考虑到您的项目有类似的内容project.user_id)并将它们显示到应用程序中。

第二种方法

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

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

我希望这是有道理的。


推荐阅读