Запрос MySQL с JS Object, возвращающим [object Object] в качестве имени таблицы - PullRequest
0 голосов
/ 23 октября 2018

Я создаю программу, которая запрашивает базы данных 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)

Но она все еще возвращает [объект Object], любая помощь будет оценена.

Ответы [ 2 ]

0 голосов
/ 23 октября 2018

Я закончил тем, что создал переменную в цикле

let table = keys[x]

, и это помогло, по какой-то причине $ {keys [x]} возвращал undefined, но переменная возвращала имя таблицы.Теоретически я мог бы изменить циклы for на

for(x in Tables)

, и x вернул бы заголовок, чтобы я мог вернуться и переписать его таким образом.Спасибо.

0 голосов
/ 23 октября 2018

Tables[x] это объект.Вам нужно получить имя таблицы из нее.

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

Выглядит так, как будто имя свойства совпадает с названием, поэтому вы можете сделать:

conn.query(`SELECT * FROM ${x}`, (err, results) => {
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...