Доступ к элементам в JSON для nodejs - PullRequest
0 голосов
/ 14 апреля 2019

Во-первых, я очень новичок в node / JSON, поэтому, пожалуйста, примите это во внимание при чтении.

Целью этого кода является получение данных из базы данных SQL Server и возможность доступа к элементам, которые он извлекает. Например, он получит несколько тысяч идентификаторов учетных записей парентных учетных записей, и я просто хочу получить доступ к одному из них.

Я просматриваю форумы почти весь день, пытаясь получить доступ к элементам JSON из моей функции nodejs, и каждый раз, когда я пытаюсь получить доступ к одному из этих элементов, у меня появляется ошибка "undefined". В крайнем случае я здесь.

Я проверил несколько раз, чтобы увидеть, что набор записей был проанализирован, и кажется, что он анализируется.

Ниже приведен мой код, и очень маленький пример кода JSON подходит к концу.

Я прокомментировал, где я получаю свою ошибку.

function getEmp() {
    var conn = new sql.ConnectionPool(dbConfig);
    var req = new sql.Request(conn);

    conn.connect(function (err) {
        if (err) {
            console.log(err);
            return;
        }
        req.query("SELECT * FROM parentaccount Where accountname like 'Titan%' FOR JSON PATH", function (err, recordset) {
            if (err) {
                console.log(err);
            }
            else {
                const Test1 = recordset[0].ParentAccountId; //error here
                console.log(Test1);
            }
            conn.close();
        })
    })
}

getEmp();





//EXAMPLE JSON
{ recordsets: [ [ [Object] ] ],
recordset:   
[ { 'JSON_F52E2B61-18A1-11d1-B105-00805F49916B':
'[{"ParentAccountId":4241411,"AccountName":"Titan"} ],
output: {},
rowsAffected: [ 3 ] }



ERROR:
TypeError: Cannot read property 'ParentAccountId' of undefined
    at C:\Users\za47387\Desktop\Excel Export Code\test2.js:31:48
    at _query (C:\Users\za47387\node_modules\mssql\lib\base.js:1347:9)
    at Request.tds.Request.err [as userCallback] (C:\Users\za47387\node_modules\mssql\lib\tedious.js:671:15)
    at Request.callback (C:\Users\za47387\node_modules\tedious\lib\request.js:37:27)
    at Connection.endOfMessageMarkerReceived (C:\Users\za47387\node_modules\tedious\lib\connection.js:2104:20)
    at Connection.dispatchEvent (C:\Users\za47387\node_modules\tedious\lib\connection.js:1084:36)
    at Parser.tokenStreamParser.on (C:\Users\za47387\node_modules\tedious\lib\connection.js:914:14)
    at Parser.emit (events.js:189:13)
    at Parser.parser.on.token (C:\Users\za47387\node_modules\tedious\lib\token\token-stream-parser.js:27:14)
    at Parser.emit (events.js:189:13)

1 Ответ

0 голосов
/ 14 апреля 2019

Из того образца, которым вы поделились,

набор записей [0] не определен, что означает две опции:

а) результат запроса не содержит строк. б) результат запроса в другом формате, чем ожидалось.

хотя я подозреваю, а), это хорошо, чтобы утешить вывод. Запустите приведенный ниже код, прежде чем пытаться получить доступ к ParentAccountId.

console.log('output : ', JSON.stringify(recordset, null, 4));

также я бы изменил код так:

const Test1 = (Array.isArray(recordset) && 
recordset.length) ? recordset[0].ParentAccountId : null;

чтобы ошибка не приводила к остановке процесса nodejs.

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