问题描述
let get = {};
get.getGuildData = (id) => {
const guildData = require('./models/guilds.js')
guildData.findById(id).then(async (data) => {
return guildData.findById(id)
})
};
module.exports = { get }
const getGuild = bee.get.getGuildData(msg.guildID)
console.log(getGuild)
它返回未定义,但是实际函数上的console.log返回正确的值:
让我知道是否有人知道解决方案。
我无法找不到在这篇文章中找到答案。 How do I return the response from an asynchronous call?
解决方法
您无法返回数据,因为它尚不存在。您可以做的就是兑现承诺。 guildData.findById(id)
显然已经在返回一个可以解决数据的承诺,因此您无需在其上调用.then
即可创建新的承诺。
get.getGuildData = (id) => {
const guildData = require('./models/guilds.js')
return guildData.findById(id);
};
由于该函数现在正在返回promise,因此任何调用该函数的代码都需要使用promise。在诺言上致电.then
:
bee.get.getGuildData(msg.guildID)
.then(data => {
console.log(data);
});
或者,如果您使用的是异步功能,请使用await:
async function someFunction() {
const data = await bee.get.getGuildData(msg.guildID);
console.log(data);
}