Estoy buscando para ver si esto es posible, mi plan era usar las solicitudes AJAX del extremo del cliente hasta un punto final en cada entrada de carácter para proporcionar sugerencias de autocompletado basadas en los datos recuperados de mi base de datos de clientes.
Estoy atascado porque no encuentro respuestas adecuadas a través de Google. Mi declaración SQL en este momento es
customerSearchAutoComplete = function(query, callback) { connection.query('SELECT * FROM customer WHERE name LIKE % ? % OR address LIKE % ?', [query,query], function(err, rows, fields) { if (err) throw err; var data = []; for (i = 0; i < rows.length; i++) { data.push(rows[i]); } }); callback(data) }y estoy recibiendo dos errores, uno que mi devolución de llamada de datos no está definida debido a que creo que no recuperé ningún resultado, el otro error que estoy recibiendo es lo que finalmente creo que es el problema, mi declaración sql.
{ code: 'ER_PARSE_ERROR', errno: 1064, sqlMessage: "You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '% 'john' % OR address LIKE % 'john' %' at line 1", sqlState: '42000', index: 0, sql: "SELECT * FROM customer WHERE name LIKE % 'john' % OR address LIKE % 'john' %" }He solucionado mi problema. Una fue que mi devolución de llamada estaba fuera del alcance de connection.query y nunca pude ver las filas de la variable de función, la segunda fue mover la declaración sql a una variable de cadena y configurar los comodines y la variable de consulta en una variable de cadena también, como cuando como dentro de la primera opción connection.query parece insertar paréntesis incorrectos.
He proporcionado una solución funcional, ya que veo una escasez de respuestas para esta solución cuando he estado buscando respuestas en Google.
customerSearchAutoComplete = function(query, callback) { var sql = "SELECT * FROM customer WHERE name LIKE ? OR address LIKE ?"; var sqlop = "%" + query + "%"; connection.query(sql , [sqlop,sqlop], function(err, rows, fields) { if (err) throw err; var data = []; for (var i = 0; i < rows.length; i++) { data.push(rows[i]); } callback(data) }); }