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

标签 javascript mysql arrays node.js node-mysql

我正在尝试连接到 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/

相关文章:

javascript - 如何在两个不同的 Angular 应用程序之间传递数据

php - MySQL 中有没有一种方法可以通过一个查询来反转 bool 字段?

c - 如何扫描 C 中的数组部分寻找匹配用户输入

javascript - 使用公共(public) JSON API 并将其显示为 html

javascript - 我如何在 javascript 中包含这些节点的循环

javascript - Extjs/Javascript - 在函数返回之前等待 MessageBox 响应

java - 通过在遍历数组时比较字符串来验证有效性

php - 用于生成智能 URL 的搜索解决方案

mysql - 将值序列插入单列

javascript - 将逗号分隔的 json 对象列表转换为数组