Comparing version 1.0.6 to 1.1.0
@@ -48,9 +48,37 @@ "use strict"; | ||
{ | ||
let p; | ||
for (let i in params) | ||
{ | ||
p = params[i]; | ||
let p = params[i]; | ||
req.addParameter(i, p.type, p.value, p); | ||
} | ||
} | ||
var colNames = []; | ||
var recordsets = []; | ||
var recordset = []; | ||
req.on('columnMetadata', function (metadata) | ||
{ | ||
colNames = columnNamesFromMetadata(metadata); | ||
}); | ||
function done(rowCount, more) | ||
{ | ||
if (colNames.length === 0) return; | ||
recordsets.push(recordset); | ||
recordset = []; | ||
colNames = []; | ||
} | ||
req.on('done', done); | ||
req.on('doneInProc', done); | ||
req.on('row', function (columns) | ||
{ | ||
var row = {}; | ||
for (var i = 0, l = columns.length; i < l; ++i) | ||
row[colNames[i]] = columns[i].value; | ||
recordset.push(row); | ||
}); | ||
@@ -73,36 +101,11 @@ if (options.batch) | ||
let rowCount = sqlResult[0]; | ||
let rows = sqlResult[1]; | ||
if (!recordsets || (recordsets.length === 0 && rowCount !== 0)) | ||
return rowCount; | ||
result.rowCount = rowCount; | ||
if (!rows || (rows.length === 0 && rowCount !== 0)) | ||
return rowCount; | ||
// convert rows into a better format | ||
let tdmRows = new Array(rows.length); | ||
if (rows.length > 0) | ||
{ | ||
let columns = new Array(rows[0].length); | ||
for (let i = 0; i < rows[0].length; i++) | ||
{ | ||
columns[i] = rows[0][i].metadata.colName; | ||
} | ||
let r; | ||
for (let i = 0; i < rows.length; i++) | ||
{ | ||
r = {}; | ||
for (let ci = 0; ci < columns.length; ci++) | ||
r[columns[ci]] = rows[i][ci].value; | ||
tdmRows[i] = r; | ||
} | ||
} | ||
result.rows = tdmRows; | ||
result.rows = options.multiple | ||
? recordsets | ||
: recordsets[0]; | ||
} | ||
else | ||
{ | ||
result.rowCount = sqlResult; // not sure if this can actually happen | ||
} | ||
@@ -148,1 +151,9 @@ return result; | ||
}; | ||
function columnNamesFromMetadata (metadata) | ||
{ | ||
var names = new Array(metadata.length); | ||
for (var i = 0, l = metadata.length; i < l; ++i) | ||
names[i] = metadata[i].colName; | ||
return names; | ||
} |
@@ -36,3 +36,2 @@ "use strict"; | ||
tediousConfig.options = {}; | ||
tediousConfig.options.rowCollectionOnRequestCompletion = true; | ||
@@ -39,0 +38,0 @@ this.tediousConfig = tediousConfig; |
{ | ||
"name": "tedium", | ||
"description": "A generator-based wrapper for Tedious to make it easier to work with.", | ||
"version": "1.0.6", | ||
"version": "1.1.0", | ||
"author": "Bret Copeland <bret@atlantisflight.org>", | ||
@@ -6,0 +6,0 @@ "main": "./lib/Tedium.js", |
@@ -80,2 +80,12 @@ # Tedium | ||
If you need to return multiple result sets from your SQL Query, you can specify `multiple: true` in the third argument to `request()`. In this case, the `rows` property of the returned results will be an array of arrays of rows, rather than just a single array of rows. | ||
```js | ||
var results = yield pool.request(sql, params, { multiple: true }); | ||
var firstSet = results.rows[0]; | ||
var secondSet = results.rows[1]; | ||
// etc... | ||
``` | ||
### Transactions | ||
@@ -82,0 +92,0 @@ |
New author
Supply chain riskA new npm collaborator published a version of the package for the first time. New collaborators are usually benign additions to a project, but do indicate a change to the security surface area of a package.
Found 1 instance in 1 package
30351
604
232
1