发送回用户时填充数组为空
filled array is empty when send back to user
我尝试使用 SQL 从 azure 数据库中获取数据,为此我使用了 tedious。当我执行代码时,数组“result”填满了数据,但是当 de respond 将数组“result”发送给用户时,它是空的。为什么以及如何解决? (我想以JSON格式发回,长度未知我用5来调试)。
这是我的代码
router.get('/', async (req, res) => {
result = []
let rowData = {}
const request = new Request(
`SELECT TOP (5) [LogID]
,[OpdrachtID]
,[ChangeLog]
,[TimeStamp]
,[PersonID]
FROM [log].[LOpdracht]`,
function (err, rowCount, rows) {
if (err) throw err
})
connection.execSql(request)
request.on('row', function(columns){
rowData = {}
columns.forEach(function(column){
rowData[column.metadata.colName] = column.value
})
result.push(rowData)
})
res.send(result)
})
看起来您正在使用 Tedious。如果是这样,那么您可以使用 'done'
事件在请求完成并且所有行都已读入 result
.
时收到通知
request.on('done', () => res.send(result));
更新:正如文档中的 note 指出的那样,由于您使用的是 execSql
,因此您需要收听 doneProc
而 doneInProc
改为:
request.on('doneProc', () => res.send(result));
request.on('doneInProc', () => res.send(result));
我通过添加这个解决了它:
request.on('requestCompleted', () => {
res.send(result)
})
我尝试使用 SQL 从 azure 数据库中获取数据,为此我使用了 tedious。当我执行代码时,数组“result”填满了数据,但是当 de respond 将数组“result”发送给用户时,它是空的。为什么以及如何解决? (我想以JSON格式发回,长度未知我用5来调试)。
这是我的代码
router.get('/', async (req, res) => {
result = []
let rowData = {}
const request = new Request(
`SELECT TOP (5) [LogID]
,[OpdrachtID]
,[ChangeLog]
,[TimeStamp]
,[PersonID]
FROM [log].[LOpdracht]`,
function (err, rowCount, rows) {
if (err) throw err
})
connection.execSql(request)
request.on('row', function(columns){
rowData = {}
columns.forEach(function(column){
rowData[column.metadata.colName] = column.value
})
result.push(rowData)
})
res.send(result)
})
看起来您正在使用 Tedious。如果是这样,那么您可以使用 'done'
事件在请求完成并且所有行都已读入 result
.
request.on('done', () => res.send(result));
更新:正如文档中的 note 指出的那样,由于您使用的是 execSql
,因此您需要收听 doneProc
而 doneInProc
改为:
request.on('doneProc', () => res.send(result));
request.on('doneInProc', () => res.send(result));
我通过添加这个解决了它:
request.on('requestCompleted', () => {
res.send(result)
})