【发布时间】:2018-11-24 18:09:11
【问题描述】:
我正在构建一个 GraphQL API,我需要在其中访问附近的用户位置。我使用 node-georedis 库 (https://github.com/arjunmehta/node-georedis),它需要回调以获取返回数据。
我可以验证回调确实被调用并返回了正确的信息,但是当我尝试在 GraphQL 查询解析器中返回该数据时,它是未定义的。我认为这是一个异步问题,但我在搜索 stackoverflow 后尝试了各种基于 Promise、await/async 甚至是同步实现,但均未成功。
也许我忽略了范围问题?任何想法将不胜感激!
Query: {
nearbyUsers: async (
_,
{ input }: GQL.INearbyUsersOnQueryArguments
) => {
return nearbyUsers(input.latitude, input.longitude);
}
},
export const nearbyUsers = (latitude: Number, longitude: Number) => {
let users: any[] = [];
georedis.nearby({ latitude, longitude }, 5000, async (err: any, userIDS: any) => {
if (err) {
console.log(err);
} else {
users = await User.findByIds(userIDS);
console.log(users); // Does indeed print proper Users
}
});
return users; // Value is [] when returning
};
【问题讨论】:
标签: node.js async-await graphql