gpt4 book ai didi

node.js - GraphQL 查询在 node-georedis API 回调完成之前返回数据(异步问题?)

转载 作者:太空宇宙 更新时间:2023-11-03 22:59:55 24 4
gpt4 key购买 nike

我正在构建一个 GraphQL API,我需要在其中访问附近的用户位置。我使用 node-georedis 库 ( https://github.com/arjunmehta/node-georedis ),它采用回调来获取返回数据。

我可以验证确实调用了回调并返回了正确的信息,但是当我尝试在 GraphQL 查询解析器中返回该数据时,它是未定义的。我认为这是一个异步问题,但在搜索 stackoverflow 但没有成功后,我尝试了各种基于 Promise 的等待/异步,甚至同步实现。

也许我忽略了范围问题?任何想法将不胜感激!

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

};

最佳答案

export const nearbyUsers = (latitude: Number, longitude: Number) => {
return new Promise((resolve, reject) => {
georedis.nearby({ latitude, longitude }, 5000, (err: any, userIDS: any) => {
err ? reject(err) : resolve(userIDS);
});
}).then(async (userIDS) => {
return User.findByIds(userIDS as string[]);
});
};

关于node.js - GraphQL 查询在 node-georedis API 回调完成之前返回数据(异步问题?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50866381/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com