javascript查询mysql,js object返回[object object]作为表名

9udxz4iz  于 2021-06-18  发布在  Mysql
关注(0)|答案(2)|浏览(411)

我正在构建一个程序,用于查询mysql数据库,获取表、字段、字段数据类型和条目,并将其作为单个对象返回,以便以后将mysql数据作为表进行查看。
这就是构建对象的外观:

{
    `Table_Name`: {
        Title: `Table_Name`,
        Fields: {
            `Field Name`: `Datatype`
        },
        RowData: []
    }

}

获取表的查询是好的,但是获取行数据的查询不是。查询函数如下所示:

function getRows(){

        let secondpromises = [];

        secondpromises.push(
            new Promise((resolve, reject) => {
                for(x in Tables){
                    Connect_SQL(SQLcreds, w_newSconn, (conn) => {
                        conn.query(`SELECT * FROM ${Tables[x]}`, (err, results) => {
                            if(err){
                                console.log(err);
                                reject(err);
                            }else{
                                for(r in results){

Tables[`${Tables[x].Title}`].RowData.push(results[r]);
                                }
                                resolve(results);
                            }
                        });
                    });

                    if(x == Tables.length - 1){
                        Promise.all(secondpromises).then(() => {
                            if(w_newSconn){
                                w_newSconn.close();
                                w_newSconn = null;
                            }
                            console.log(Tables);
                        });
                    }
                }
            })
        );
    }

错误来自conn.query()。它引发了一个错误,指出我的sql语法中有一个错误:

SELECT * FROM [object Object]

我理解原因,我确信有一种方法可以通过json.stringify()解决这个问题,但必须有一种更简单的方法。我已经尝试过创建这样一个变量:

let objArray = Object.keys(Tables)

但它仍然返回了[对象],任何帮助都将不胜感激。

jtjikinw

jtjikinw1#

我最终在循环中创建了一个变量

let table = keys[x]

不管出于什么原因,${keys[x]}返回的是未定义的,但变量返回的是表名。理论上我可以把for循环改成a

for(x in Tables)

x会返回标题,这样我就可以回去重写了。谢谢您。

hc8w905p

hc8w905p2#

Tables[x] 是一个对象。您需要从中获取表名。

conn.query(`SELECT * FROM ${Tables[x].Title}`, (err, results) => {

看起来属性名称与标题相同,因此您可以执行以下操作:

conn.query(`SELECT * FROM ${x}`, (err, results) => {

相关问题