Open
Description
The current implementation of named-placeholders
is flawed. It is assumes that parameter values is known in advance, i.e. the only possible use case is:
var mysql = require('mysql');
var toUnnamed = require('named-placeholders')();
var q = toUnnamed('select 1+:test', { test: 123});
mysl.createConnection().query(q[0], q[1]);
As a result, it is not possible to implement prepared statements using this implementation.
My suggestion is to reimplement named-placeholders
API as:
const {
parser,
mapValues
} = require('named-placeholders');
// Used to control LRU.
const parseNamedPlaceholder = parser();
const inputQuery = 'SELECT :foo, :foo, :bar';
const queryTemplate = parseNamedPlaceholder(inputQuery);
// {
// statement: 'SELECT ?, ?, ?',
// parameterMap: {
// 0: 'foo',
// 1: 'foo',
// 2: 'bar'
// }
// }
mapValues(queryTemplate.parameterMap, {
foo: 'A',
bar: 'B'
});
// {
// 0: 'A',
// 1: 'A',
// 2: 'B'
// }
Metadata
Metadata
Assignees
Labels
No labels