2

I am new in Node.js and I want to pass data array to controller. But I am unable to insert for loop data in array and I also want to get result data out side function.

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);
    }
})
hong4rc
  • 3,999
  • 4
  • 21
  • 40
WASIM RAZA
  • 23
  • 6

2 Answers2

1

I would make use of async and 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)
        })
    })
}

If you're not that familiar with async and await I would recommend this video

Florian Ludewig
  • 4,338
  • 11
  • 71
  • 137
0

u need read about async and callbacks in javascript. An alternative is read about async and await.