gpt4 book ai didi

javascript - 为什么我尝试将 SQL 查询中的行获取到脚本中的全局变量中却只得到一个空数组?

转载 作者:行者123 更新时间:2023-11-29 15:22:28 25 4
gpt4 key购买 nike

我正在尝试连接到 MYSQL 数据库并获取表中的所有电子邮件地址。我正在使用 promise ,并且尝试设置一个最终包含地址的全局数组。但是,运行我的代码后,它是空的。我的代码是:

var mysql = require('mysql');
var async = require('async');
function DBconnect(){
return new Promise((resolve,reject)=>{
resolve(
mysql.createConnection({
host:"0.0.0.0",
user: "mysqldbadmin",
password: "mypassword",
database: "myDB"
})
)
})

}

var emailArr = new Array(); //winds up empty, should not be
DBconnect().then(result =>{

var validUsers = new Array();
result.connect(function(err){
if (err){
throw err;
}
result.query(" select users_email from site_users left join site_usermeta on ( site_users.id = site_usermeta.user_id) where (meta_value LIKE '%spec1%' OR meta_value LIKE '%spec2%') and meta_key=\"site_capabilities\" ",
function(err, res, fields){
if(err)
throw err;

var i = 0;
for (i = 0; i < res.length; i++){
validUsers[i] = res[i].users_email;

}
console.log(validUsers); // THIS prints out what I need
emailArr = validUsers;

result.end(function(err){});
});

})
})
console.log(emailArr);

我需要emailArr来保存字符串值;稍后我的脚本中将需要它们。我怎样才能做到这一点?

最佳答案

因为您的日志语句在数据从数据库返回之前执行。您的数据库连接和查询正在异步完成。

尝试将 console.log(emailArr); 放在 emailArr = validUsers; 之后。您将看到它具有您放入其中的值。

关于javascript - 为什么我尝试将 SQL 查询中的行获取到脚本中的全局变量中却只得到一个空数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59292365/

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