首页 > 解决方案 > 如何在返回结果之前确保 mongoose 查询已完成?

问题描述

我有这个代码来获取我的游戏中的库存:

async function(username) {
    return await User.findOne({ username: username }).lean().inventory;
}

目前,我在应该返回数据的 socket.on 中运行这个函数:

socket.on('give inventory', function() {
    console.log(connections[socket.id])
    itemmanage.getInventory(connections[socket.id]).then(function(result) {
        console.log(result);
        socket.emit("get inventory", result);
    })
});

但是,这不会返回数据。相反,它只是返回未定义。如何让它返回数据而不是未定义?我尝试过的一切仍然返回未定义。

标签: node.jsmongoosesocket.io

解决方案


 async function(username) {
   const data = await User.findOne({ username: username }).lean();
   return data.inventory;
 }

 socket.on('give inventory', async function() {
    try{
        console.log(connections[socket.id])
        const result = await itemmanage.getInventory(connections[socket.id]);
        console.log(result);
        socket.emit("get inventory", result);
    }catch(err){
       //code for handleing error 
    }
 });

推荐阅读