javascript - Graphql 解析器未返回任何数据

标签 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);
        }
    });
}

我认为我的 promise 没有按预期发挥作用。有什么见解吗?我的架构都设置正确。我尝试过控制台日志记录

最佳答案

您的getAllUsers函数返回undefined。当解析器返回 undefined 时,意味着无法找到该对象,您应该返回一个 Promise。

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

关于javascript - Graphql 解析器未返回任何数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58759434/

相关文章:

ios - SDWebImage 库 - 来自 URL 的占位符

javascript - promise 可以对 onFulfilled 有多个参数吗?

javascript - getElementsByTagName(...).0.parentNode' 为 null 或不是对象

java - SupplyAsync 等待所有 CompletableFutures 完成

javascript - textarea 未使用 jQuery.Serialize() 序列化

c# - 在 visual studio 中调用异步 HttpClient.GetAsync() 后调试器停止

javascript - Vue.js、Vuex 与 Promises

javascript - 如何使用 Jest 模拟 https.get

javascript - 如何获取选项卡的先前 URL?

javascript - jQuery 在动画和颜色变化之间暂停