我正在尝试使用 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/