gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 21:58:10 25 4
gpt4 key购买 nike

这是我在路由中的代码

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com