我正在构建一个程序,用于查询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)
但它仍然返回了[对象],任何帮助都将不胜感激。
2条答案
按热度按时间jtjikinw1#
我最终在循环中创建了一个变量
不管出于什么原因,${keys[x]}返回的是未定义的,但变量返回的是表名。理论上我可以把for循环改成a
x会返回标题,这样我就可以回去重写了。谢谢您。
hc8w905p2#
Tables[x]
是一个对象。您需要从中获取表名。看起来属性名称与标题相同,因此您可以执行以下操作: