node.js - 如何在返回结果之前确保 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);
})
});
但是,这不会返回数据。相反,它只是返回未定义。如何让它返回数据而不是未定义?我尝试过的一切仍然返回未定义。
解决方案
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
}
});
推荐阅读
- python - 从 shell 与 Django 视图运行外部 python 脚本
- git - 希望恢复/删除远程提交以解决合并冲突
- java - shared.loader 中的 Tomcat 环境变量触发警告
- makefile - make install 找不到 aclocal
- python-3.x - 分别在目录中的特定文件上运行代码(按文件名)
- bash - 使用 SSH 密钥登录在 Git Bash 上不起作用,但在 Windows 命令提示符中起作用
- javascript - 使用 Google 地球引擎将每日数据减少到每月
- java - 为什么 Dom4JDriver 在 xml 内容的开头附加换行符?
- memory-management - 内核内存与用户内存分配
- mongodb - 如何通过 MongoDB Compass 或 RoboMongo 等 UI 工具连接运行在 Kubernetes 集群上的 MongoDB?