为什么这个数据库函数返回未定义?
Why is this DB function returning undefined?
我正在尝试创建一个可以轻松调用 MongoDB.
的函数
这是函数code/hanlder:
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)
它 returns 未定义,但是 console.log 在实际函数上 returns 是正确的:
如果有人知道这个问题的解决方案,请告诉我。
我不能在这个post中找到答案。 How do I return the response from an asynchronous call?
您不能 return 数据,因为它还不存在。你能做的就是return一个承诺。 guildData.findById(id)
显然已经 return 一个解析为数据的承诺,所以你不需要调用 .then
它来创建一个新的承诺。
get.getGuildData = (id) => {
const guildData = require('./models/guilds.js')
return guildData.findById(id);
};
由于该函数现在 return 是一个 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);
}
我正在尝试创建一个可以轻松调用 MongoDB.
的函数这是函数code/hanlder:
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)
它 returns 未定义,但是 console.log 在实际函数上 returns 是正确的:
如果有人知道这个问题的解决方案,请告诉我。
我不能在这个post中找到答案。 How do I return the response from an asynchronous call?
您不能 return 数据,因为它还不存在。你能做的就是return一个承诺。 guildData.findById(id)
显然已经 return 一个解析为数据的承诺,所以你不需要调用 .then
它来创建一个新的承诺。
get.getGuildData = (id) => {
const guildData = require('./models/guilds.js')
return guildData.findById(id);
};
由于该函数现在 return 是一个 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);
}