javascript - 无法在 node.js 中打印数组

标签 javascript mysql arrays node.js express

这是我在路由中的代码

router.get('/chkjson', function(req, res, next) {
    req.getConnection(function(err,connection){
        var ItemArray = [];
        var myset = [];

        var query = connection.query('SELECT `db_name` FROM `database`',function(err,rows)
        {
            ItemArray.push({
                allDb : []
            });
            var k=0;
            for (var i in rows) {
                    retset = JSON.stringify(rows[i]);
                    var jsonset =  JSON.parse(retset);
                    console.log(ItemArray);
                    console.log("========");
                    myset.push(ItemArray);
                    ItemArray[0].allDb.push(jsonset.db_name);
            }
        });
        console.log(myset);   //blank array
        console.log("-----");
        console.log(ItemArray);   //blank array
        console.log("-----");
            res.render( 'new/post-select-table', 
                { 
                    title: 'Select Database',
                    session_store:req.session,
                });
        });
});

当我尝试在 for 循环外打印数组时,我得到的是空白数组。任何人都可以帮助我哪里出错了。

最佳答案

connection.query() 是异步的,在您的代码中,您在查询回调之外记录 ItemArray。该数组将为空,因为它尚未设置任何内容(即您的回调还没有触发结果)。以下将您的 console.log 和渲染函数移到 for 循环之外,但在回调内部,因此它应该按预期打印 ItemArray 的最终结果:

router.get('/chkjson', function(req, res, next) {
    req.getConnection(function(err,connection){
        var ItemArray = [];
        var myset = [];

        var query = connection.query('SELECT `db_name` FROM `database`',function(err,rows)
        {
            ItemArray.push({
                allDb : []
            });
            var k=0;
            for (var i in rows) {
                    retset = JSON.stringify(rows[i]);
                    var jsonset =  JSON.parse(retset);
                    console.log(ItemArray);
                    console.log("========");
                    myset.push(ItemArray);
                    ItemArray[0].allDb.push(jsonset.db_name);
            }

            console.log(myset);   //blank array
            console.log("-----");
            console.log(ItemArray);   //blank array
            console.log("-----");
                res.render( 'new/post-select-table',
                    {
                        title: 'Select Database',
                        session_store:req.session,
                    });
        });
    });
});

关于javascript - 无法在 node.js 中打印数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44352472/

相关文章:

javascript - Web Audio API 中 MediaElementSource 使用的内存是否比 BufferSource 少?

javascript - 将对象数组从 js 传递到 rails

mysql - 从多个列中计算特定值,然后按另一列中的值进行分组……在mysql中

mysql - SQL 查询问题

arrays - 如何在 Excel VBA 中对数组进行切片?

javascript - 杂散开始标记脚本

javascript - D3条形图图形表示问题

mysql - 使用mysql工作台创建数据库

objective-c - C/Java/等。 Objective-C 中的样式数组

c - 字符串数组未正确存储