Skip to content

[Request] Let client.query support passing values with an object #1560

@qdechochen

Description

@qdechochen

Something like:

client.query(`
  SELECT id, name
  FROM table1
  WHERE gender={gender} AND age>{age}
`, { gender: 'M', age: 20});

I wrote a function to do the translation:

const replaceEngine = (() => {
  return (template, data) => {
    let index = 0;
    const values = [];
    return {
      text: template.replace(/\{(\w+)\}/g, (match, key) => {
        index++;
        values.push(data && data.hasOwnProperty(key) ? data[key] : null);
        return `$${index}`;
      }),
      values,
    };
  };
})();

======

replaceEngine(`
  SELECT id, name
  FROM table1
  WHERE gender={gender} AND age>{age}
`, { gender: 'M', age: 20})

you will get:

{
  text: 'SELECT id, name FROM table1 WHERE gender=$1 AND age>$2',
  values: ['M', 20]
}

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions