Узел JS: Как я могу преобразовать столбцы из моих наборов записей SQL в объекты json? - PullRequest
0 голосов
/ 09 июля 2019

РЕШЕНИЕ НАЙДЕНО: Мне пришлось изменить res.send (result.recordsets) на res.send (result.recordset) в моем sqlCommand.Select, а затем использовать res.send (obj [keys [1]] ["userid"]).Спасибо!

Я новичок в Node Js и JavaScript в целом.Я строю конечные точки, которые будут запрашивать мой SQL-сервер для набора результатов.Затем я хочу взять набор результатов из моей конечной точки и сохранить его в другой базе данных.

Я могу получить весь набор результатов из моей экспресс-функции в формате массива.Я с трудом разбираю детали каждого ключа в объекте массива.Обратите внимание, я использую Express.

Я пытался использовать JSON.Stringify, а затем JSON.Parse в моем наборе результатов, но детализация моих объектов возвращается как неопределенная.Вот код ниже:

Вот начальная конечная точка:

app.get('/getAll', (req, res) =>{

    sqlCommand.Select("select * from usertable", res)

})

Вот весь sqlCommand.Select

exports.Select = function(sql, res){

    conn.connect().then
    (function() {

        var req = new sqlDb.Request(conn);

        req.query(sql).then(
            function(result) {

                if (result.rowsAffected > 0){
                    res.send(result.recordsets)
                }else{
                    res.send({"Result": "No results Found"})
                }


                res.end()
                conn.close()

            }

        ).catch(function (err) {

            console.log(err)
            res.send({"Result": "Incorrect query"})
            res.end()
            conn.close()

        })

})

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

app.get('/insert', (req, res) => {

        Request.get("http://localhost:3001/getAll", (error, response, body) => {
            if(error){
               throw error
            }else{
                var obj = JSON.parse(body);
                var keys = Object.keys(obj);

                for (i = 0; i < keys.length; i++){

                   res.send(obj[keys[i]])
                   console.log(obj[keys[i]])

                }

            }

            res.end()
        });

})

Вот наборы результатов SQL (это все демонстрационные данные):

[
    {
        "id": 1,
        "userid": "abc",
        "password": "test"
    },
    {
        "id": 2,
        "userid": "efg",
        "password": "test2"
    },
    {
        "id": 3,
        "userid": "ijk",
        "password": "test3"
    }
]

Я получаю результатыдля каждого ключа, если я просто запускаю "res.send (obj [keys [i]])" в моей функции "/ insert"

Однако, я получаю "undefined", если я пытаюсь что-то вроде:

res.send(obj[keys[i]]["userid"]]

или

 res.send(obj[keys[i]].userid) 

Я надеялся увидеть данные, соответствующие "userid"поле для позиции" я ".

Любая помощь очень ценится.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...