在mongoose函数外部返回空数组

j2qf4p5b  于 2021-09-23  发布在  Java
关注(0)|答案(1)|浏览(208)

我试图使用mongoose从mongo获取一些随机值,并将其推送到一个数组中。但函数外的数组为空:

exports.Run = (req, res) => {
    var response = {}
    var you = "you"
    response[you] = [];

    Model.estimatedDocumentCount().exec(function (err, count) {
        for (let i = 0; i < 8; i++) {
            let random = Math.floor(Math.random() * count)

            Model.findOne()
                .skip(random)
                .exec( function (err, result) {
                    response[you].push(result);
                    console.log(response); // Array is increased each iteration
                })
        }
    })
    console.log(response); // Array is empty here
    res.status(200).send(response);
};

拜托,怎么解决?
提前谢谢。

fafcakar

fafcakar1#

这边走。希望它能起作用

exports.Run =async (req, res) => {
        var response = {}
        var you = "you"
        response[you] = [];

        var result = await Model.estimatedDocumentCount().exec(function (err, count) {
            for (let i = 0; i < 8; i++) {
                let random = Math.floor(Math.random() * count)

               await Model.findOne()
                    .skip(random)
                    .exec( function (err, result) {
                        response[you].push(result);
                        console.log(response); 
                    })
            }
    return response;

            })

    console.log(result); // Array is empty here
        res.status(200).send(result);
    };

相关问题