Use autocomplete of jquery UI in nodejs

0

I am developing a web application in Node.js using the express framework and as an Oracle 10g database.

I am using the Oracle module for Node.js and a PHP example guide, I tried to emulate the example to Node but I still can not get the result of the autocomplete, for now I only display the values in the input more they do not complete the data, nor are they kept in the input, please if you could guide me for this I would be grateful.

Official OracleDB documentation for Node.js

Example of a guide

My code is as follows ...

Node:

router.get('/list_user', authorize, function(req, res, next) {
    var connect = require('../connections/conn')(2);
    oracledb.getConnection(
        connect,
        function(err, connection) {
            if (err) {
                console.error(err.message);
                return;
            }
            connection.execute("SELECT NOMBRE FROM USUARIOS", function(err, result) {
                if (err) {
                    console.error(err.message);
                } else {
                    var usuarios = [];
                    console.log("Complete...");
                    for (var index = 0; index < result.rows.length; index++) {
                        usuarios.push(result.rows[index].NOMBRE);
                    }

                    res.send(usuarios);

                }

                connection.close();
            });
        });
});

The function for autocomplete:

$(function() {
    $("#vnombre").autocomplete({
        source: "/usuarios/list_user",
        type: "GET",
        minLength: 2,
        select: function(event, ui) {
            event.preventDefault();
            $('#vnombre').val(ui.item.NOMBRE);

        }
    });
});

HTML:

<div class="form-group ui-widget">
    <label class="col-sm-2 col-md-2 col-lg-2 l " for="textinput">Nombre</label>
    <div class="col-sm-10 col-md-10 col-lg-10">
        <input type="text" placeholder="Nombre" class="form-control 
       mayus" id="vnombre" name="vnombre">
    </div>
</div>

Example MySQL + Node.js:

Autocomplete in Node.js with MySQL

    
asked by demepty 27.10.2017 в 22:00
source

1 answer

0

I found the solution to this, I should also clarify that I use the TWIG template engine.

Node js

router.get('/list_user', authorize, function(req, res, next) 
{
var xxx=req.body.term;
var connect = require('../connections/conn')(2);
oracledb.getConnection(
    connect,
    function(err, connection) {
        if (err) {
            console.error(err.message);
            return;
        }
        connection.execute("SELECT NOMBRE,APELLIDO FROM USUARIOS WHERE NOMBRE LIKE '%"+xxx+"%'", function(err, result) {
            if (err) {
                console.error(err.message);
            } else {
              res.send(result.rows);
            }
            connection.close();
        });
    });
    });

The function for autocomplete:

 $("#vnombre).autocomplete({ //incio del autocomplete
 source:function (request,response){  //inicio del source
 $.ajax({       
 url: "/correspondencia/list_user" ,
 type: "POST",
 data:{
      term:request.term
    },
 timeout: 5000,
 success: function(data) 
    {                  //inicio del sucess
          response($.map(data,function(item){ //inicio del response
          return {
          label: item.NOMBRE,
          value: item.NOMBRE,
          ape: item.APELLIDO
                };
         }));                    
    }               //fin del sucess 
                  });    //fin del ajax 
                }, //fin fel source                                     
minLength:2,
select: function(event,ui){
  $("#vnombre").val(ui.item.value);
  $("#vapellido").val(ui.item.ape);
     } ,      
error: function() {
    console.log('process error');
    }
    }); //fin del autocomplete    

HTML                                  

         <div class="col-xs-6 col-sm-6 col-md-6">
          <div class="ui-widget form-group">
          <label for="ape" class="align_left">Apellido:</label>
          <input name="ape"  id="vapellido" class="form-control input-sm " placeholder="Apellido" type="text" required="required" autocomplete="off" >
          </div>
        </div>
    
answered by 19.12.2017 в 20:46