Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Làm cách nào để tạo truy vấn động bằng các tham số ràng buộc trong node.js-sql?

Bạn đang có một khởi đầu thực sự tốt, nhưng có thể bạn đã suy nghĩ quá mức về nó một chút. Bí quyết là tạo một truy vấn với trình giữ chỗ (? ) dưới dạng một chuỗi và đồng thời xây dựng một mảng giá trị.

Vì vậy, nếu bạn có params = { name: 'foo', age: 40 } , bạn muốn xây dựng các đối tượng sau:

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

Nếu bạn chỉ có { name: 'foo' } , thay vào đó bạn sẽ tạo những thứ này:

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

Dù bằng cách nào, bạn có thể sử dụng các đối tượng đó trực tiếp trong query phương pháp, tức là:

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

Vậy chúng ta xây dựng những đối tượng đó như thế nào? Trên thực tế, mã thực sự giống với buildQuery của bạn nhưng ít phức tạp hơn.

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. Vị trí của tệp my.cnf trên macOS

  2. Tự động mở rộng quy mô với Amazon Aurora Serverless

  3. Điều gì đã xảy ra đầu tiên trong mysql:tham gia hoặc ở đâu

  4. Cách theo dõi các chỉ số HAProxy với ClusterControl

  5. PHP mySQL - Chèn bản ghi mới vào bảng với tăng tự động trên khóa chính