Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Bagaimana cara membuat kueri dinamis dengan mengikat parameter di node.js-sql?

Anda memulainya dengan sangat baik, tetapi Anda mungkin terlalu banyak berpikir. Triknya adalah membuat kueri dengan placeholder (? ) sebagai string dan sekaligus membangun array nilai.

Jadi, jika Anda memiliki params = { name: 'foo', age: 40 } , Anda ingin membuat objek berikut:

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

Jika Anda hanya memiliki { name: 'foo' } , Anda akan membuat ini sebagai gantinya:

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

Apa pun itu, Anda dapat menggunakan objek tersebut secara langsung di query metode, yaitu:

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

Lalu bagaimana kita membangun objek-objek itu? Faktanya, kodenya sangat mirip dengan buildQuery Anda fungsi, tetapi kurang kompleks.

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. java.sql.SQLException:Akses ditolak untuk pengguna 'root'@'localhost' (menggunakan kata sandi:YA)

  2. Menggunakan sqlalchemy untuk kueri menggunakan beberapa kolom di mana dalam klausa

  3. Pertanyaan praktik terbaik untuk MySQL:pesan berdasarkan id atau tanggal?

  4. Kesalahan MySQL 1005?

  5. Karakter dan dan perbedaan dalam bahasa persia - Mysql