sql >> Databáze >  >> RDS >> Mysql

Jak vytvořit dynamický dotaz navázáním parametrů v node.js-sql?

Začali jste opravdu dobře, ale možná jste to trochu přehnali. Trik je vytvořit dotaz se zástupnými symboly (? ) jako řetězec a současně sestavit pole hodnot.

Pokud tedy máte params = { name: 'foo', age: 40 } , chcete vytvořit následující objekty:

where = 'name LIKE ? AND age = ?';
values = [ '%foo%', 40 ];

Pokud máte pouze { name: 'foo' } , místo toho vytvoříte tyto:

where = 'name LIKE ?';
values = [ '%foo%' ];

V obou případech můžete tyto objekty použít přímo v query metoda, tj.:

var sql = 'SELECT * FROM table WHERE ' + where;
connection.query(sql, values, function...);

Jak potom ty objekty postavíme? Ve skutečnosti je kód velmi podobný vašemu buildQuery funkce, ale méně komplexní.

function buildConditions(params) {
  var conditions = [];
  var values = [];
  var conditionsStr;

  if (typeof params.name !== 'undefined') {
    conditions.push("name LIKE ?");
    values.push("%" + params.name + "%");
  }

  if (typeof params.age !== 'undefined') {
    conditions.push("age = ?");
    values.push(parseInt(params.age));
  }

  return {
    where: conditions.length ?
             conditions.join(' AND ') : '1',
    values: values
  };
}

var conditions = buildConditions(params);
var sql = 'SELECT * FROM table WHERE ' + conditions.where;

connection.query(sql, conditions.values, function(err, results) {
  // do things
});



  1. Jaký je rozdíl mezi MySQL a MySQL2 s ohledem na NodeJS

  2. Obnovení tabulek SQL Server s menším přerušením pomocí přepínání oddílů

  3. Návrh databáze řízení zásob

  4. Jak odstranit heslo z databáze v Accessu 2016