gpt4 book ai didi

javascript - 使用 Mongoose findOne 的函数返回未定义?

转载 作者:行者123 更新时间:2023-12-03 05:56:58 25 4
gpt4 key购买 nike

我正在尝试使用 Mongoose 使用 Math.random 和 Mongoose 的 findOne 从数据库中提取随机值。在我的函数中,我得到的值是定义的;但是,当我在另一个类中调用该函数时,我收到一个未定义的值。我知道这是因为 Javascript 的异步特性,但我不知道如何解决这个问题。任何建议将不胜感激!

export const getRandomItem2 = (req, res) => {
var toReturn;
Item.count().exec(function(err, count){

var random = Math.floor(Math.random() * count);
Item.findOne().skip(random).exec(
function (err, result) {
toReturn = result.description;
console.log('toReturn populated here!' + toReturn);
return toReturn; //this is returning undefined
});
});
}

最佳答案

这是异步代码,因此在另一个函数中调用它时,您应该传递回调函数来获取结果:

export const getRandomItem2 = (callback) => {
Item
.count()
.exec((err, count) => {
Item
.findOne(Math.floor(Math.random() * count))
.skip(skip)
.exec((err, item) => callback(item));
});
}

在另一个地方:

getRandomItem2(item => {
console.log(item);
});

关于javascript - 使用 Mongoose findOne 的函数返回未定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39885339/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com