Graphql解析器未返回任何数据

时间:2019-11-08 02:07:34

标签: javascript asynchronous promise graphql apollo

我设置了一个解析器,用于查询模拟数据库文件(一个json)。

Query: {
        users: (_, filters, { dataSources }) => {
            console.log(dataSources.userAPI.getAllUsers(filters))
            return dataSources.userAPI.getAllUsers(filters);
        }
}

userAPI.getALlUsers在下面。首先,我要过滤用户列表。然后,对于每个过滤的用户,我想在返回映射的用户之前向其添加更多字段

function getAllUsers(args) {
    const { targetId, skip, limit } = args;

    const filteredUsers = new Promise((resolve, reject) => {
        const users = db.users.filter(u => {
            if (u.apps[targetId]) return u;
        });
        if (users.length === 0) return reject();
        else return resolve(users);
    });

    filteredUsers.then((users, err) => {
        if (err) console.log(err);
        else {
            const mappedUsers = users.map(u => {
                const withReturnFields = {
                    email: u.email,
                    fullname: u.fullname
                };
                return withReturnFields;
            });
            return mappedUsers.slice(skip, skip + limit);
        }
    });
}

我认为我的诺言没有按预期实现。有什么见解吗?我的架构都已正确设置。我尝试过控制台记录

1 个答案:

答案 0 :(得分:1)

您的getAllUsers函数返回undefined。当解析程序返回undefined时,表示找不到该对象,而应返回一个Promise。

return filteredUsers.then((users, err) => {