Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在mongoOp find query之外的节点js中打印结果数组?_Javascript_Node.js_Express - Fatal编程技术网

Javascript 如何在mongoOp find query之外的节点js中打印结果数组?

Javascript 如何在mongoOp find query之外的节点js中打印结果数组?,javascript,node.js,express,Javascript,Node.js,Express,我是Node.js的新手,我想将数据数组传递给控制器。但我无法在数组中插入for循环数据,我还想从函数外获取结果数据 router.get("/list-group", function(req, res) { sess = req.session; var response = {}; if (sess.loginData) { var TableData = []; var i = {}; var result = []

我是Node.js的新手,我想将数据数组传递给控制器。但我无法在数组中插入for循环数据,我还想从函数外获取结果数据

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);
    }
})
router.get(“/list group”),函数(req,res){
sess=请求会话;
var响应={};
如果(sess.loginda){
var TableData=[];
var i={};
var结果=[];
mongoOp.users\u group.find({
组id:req.query.group\u id
},功能(e,d){
var len=d[0]。分配用户id.length;
var assignuserid=d[0]。分配用户id;
对于(var i=0;i
您需要了解javascript中的异步和回调。另一种选择是阅读async和await。

我会使用
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
wait
不太熟悉,我建议

阅读可能会有帮助。首先,您需要一个闭包。另外,您是否希望对
I
的不同值按顺序或异步进行工作?