【发布时间】:2021-01-14 02:43:47
【问题描述】:
我正在尝试创建一个可以轻松调用我的 MongoDB 的函数。
这是功能代码/处理程序:
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)
它返回 undefined,但实际函数上的 console.log 返回正确的东西:
如果有人知道这个问题的解决方案,请告诉我。
我无法在这篇文章中找到答案。 How do I return the response from an asynchronous call?
【问题讨论】:
-
另外,注意comma operator返回最后一个操作数,所以
data,console.log('returned data:',data)会返回console.log的返回值,即undefined。 -
getGuildData没有return任何东西。其中的嵌套函数有一个return语句,但这与getGuildData本身返回的内容无关。 -
@Bee 您无法返回数据,因为它还不存在。你可以返回一个承诺。
guildData.findId(id)已经创建了一个将解析数据的承诺,所以你的函数的最后一行应该是return guildData.findById(id) -
@NicholasTower 我只是把它放入并运行它,仍然返回未定义。
-
是的,不,同样的问题。你只想要
(id) => { const guildData = require(...); return guildData.findById(id); }。仅此而已。
标签: javascript node.js mongoose eris