Как я могу напечатать массив результатов в узле JS вне запроса поиска mongoOp? - PullRequest
0 голосов
/ 13 октября 2018

Я новичок в Node.js и хочу передать массив данных в контроллер.Но я не могу вставить данные цикла в массив, и я также хочу получить данные результата из сторонней функции.

router.get("/list-group", function(req, res) {
    sess = req.session;
    var response = {};
    if (sess.loginData) {
        var TableData = [];
        var i = {};
        var result = [];
        mongoOp.users_group.find({
            group_id: req.query.group_id
        }, function(e, d) {
            var len = d[0].assign_user_id.length;
            var assignuserid = d[0].assign_user_id;
            for (var i = 0; i < assignuserid.length; i++) {

                var assignid = assignuserid[i];
                mongoOp.users.find({
                    _id: assignid
                }, function(err, data) {

                    // This is result array 
                    result[i] = data;

                })

            }
            // And I want to print result array here
            console.log(result);

        });

    } else {
        response = {
            "error": true,
            "message": "Invalid Login"
        };
        res.json(response);
    }
})

Ответы [ 2 ]

0 голосов
/ 13 октября 2018

Я бы использовал async и await

router.get('route', (req, res) => {
    // ...
    users.find(query, (err, d) => {
        try {
            // ...
            var results = []
            for (var data of array) {
                const result = await fetchUser(data)
                results.push(result)
            }
            console.log(results)
        } catch (err) {
            console.log('some error occured', err)
        }
    })
})

async function fetchUser(id) {
    return new Promise((resolve, reject) => {
        users.find({ _id: id }, (err, data) => {
            return err ? reject(err) : resolve(data)
        })
    })
}

Если вы не знакомы с async и await, я бы порекомендовал это видео

0 голосов
/ 13 октября 2018

Вам нужно прочитать об асинхронности и обратных вызовах в javascript.Альтернатива читается об асинхронности и ожидании.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...