【发布时间】:2019-09-04 09:48:01
【问题描述】:
首先我对 node/JSON 非常陌生,所以请在阅读时考虑到这一点。
此代码的目的是从 SQL Server 数据库中获取数据,并能够访问它提取的元素。例如,它会提取数千个父帐户 ID,而我只想访问其中一个。
我几乎一整天都在浏览论坛,试图从我的 nodejs 函数访问 JSON 元素,每次我尝试访问其中一个元素时,都会遇到“未定义”错误。作为最后的手段,我在这里。
我检查了几次,发现记录集已被解析,似乎正在被解析。
下面是我的代码,后面是一个非常小的 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)
【问题讨论】:
-
只打印记录集。它返回什么?
-
@ParthGhiya 您好 Parth,记录集成功地以 json 格式打印出我的整个查询。但是,我希望只访问一个 json 数据,而不是全部。