不要怂,就是干,撸起袖子干!

Commit 0f3b6f26 by Jan Scheurer

Allow SqlString.arrayToList method to process typed arrays

1 parent 5025a3ee
Showing with 26 additions and 10 deletions
...@@ -62,8 +62,7 @@ SqlString.escape = function(val, stringifyObjects, timeZone, dialect, field) { ...@@ -62,8 +62,7 @@ SqlString.escape = function(val, stringifyObjects, timeZone, dialect, field) {
if (Buffer.isBuffer(val)) { if (Buffer.isBuffer(val)) {
return SqlString.bufferToString(val, dialect); return SqlString.bufferToString(val, dialect);
} }
if (Array.isArray(val) || isArrayBufferView(val)) {
if (Array.isArray(val)) {
return SqlString.arrayToList(val, timeZone, dialect, field); return SqlString.arrayToList(val, timeZone, dialect, field);
} }
...@@ -97,19 +96,36 @@ SqlString.escape = function(val, stringifyObjects, timeZone, dialect, field) { ...@@ -97,19 +96,36 @@ SqlString.escape = function(val, stringifyObjects, timeZone, dialect, field) {
SqlString.arrayToList = function(array, timeZone, dialect, field) { SqlString.arrayToList = function(array, timeZone, dialect, field) {
if (dialect === 'postgres') { if (dialect === 'postgres') {
var ret = 'ARRAY[' + array.map(function(v) { if (array.map) {
return SqlString.escape(v, true, timeZone, dialect, field); var valstr = array.map(function(v) {
}).join(',') + ']'; return SqlString.escape(v, true, timeZone, dialect, field);
}).join(',');
} else {
var valstr = "";
for (var i = 0; i < array.length; i++) {
valstr += SqlString.escape(array[i], true, timeZone, dialect, field) + ',';
}
valstr = valstr.slice(0,-1);
}
var ret = 'ARRAY[' + valstr + ']';
if (!!field && !!field.type) { if (!!field && !!field.type) {
ret += '::' + field.type.replace(/\(\d+\)/g, ''); ret += '::' + field.type.replace(/\(\d+\)/g, '');
} }
return ret; return ret;
} else { } else {
return array.map(function(v) { if (array.map) {
if (Array.isArray(v)) return array.map(function(v) {
return '(' + SqlString.arrayToList(v, timeZone, dialect) + ')'; if (Array.isArray(v))
return SqlString.escape(v, true, timeZone, dialect); return '(' + SqlString.arrayToList(v, timeZone, dialect) + ')';
}).join(', '); return SqlString.escape(v, true, timeZone, dialect);
}).join(', ');
} else {
var valstr = "";
for (var i = 0; i < array.length; i++) {
valstr += SqlString.escape(array[i], true, timeZone, dialect) + ', ';
}
return valstr.slice(0, -2);
}
} }
}; };
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!