Node.js - Al escanear el QR y verificar que se encuentren en la BD mostrar su información en una lista

 
Vista:
sin imagen de perfil

Al escanear el QR y verificar que se encuentren en la BD mostrar su información en una lista

Publicado por Marco A. (1 intervención) el 12/04/2022 18:52:28
]Hola, espero darme a entender y puedan asesorarme. Estoy realizando una app web que me lea códigos QR, verifique que se encuentren en la base de datos y de ser así, me los muestre en forma ordenada en una vista. Estoy utilizando Express y MySQL, ya genero QR, lee QR, verifica que el QR se encuentre en la base de datos mediante el id y muestra esa información en una vista, el problema es que al volver al leer un nuevo QR, se elimina el anterior y se coloca el nuevo. Dejo código y capturas del proceso en particular ya agradezco de antemano.

Al escanear:
Utilizo JS para la lectura, impresión y envío de resultado
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<div id="page-content">
      <div class="bg-primary pt-10 pb-21"></div>
        <div class="container-fluid mt-n22 px-6">
         <div class="row">
          <div class="col-lg-12 col-md-12 col-12">
            <div>
              <div class="d-flex justify-content-between align-items-center">
                <div class="mb-2 mb-lg-0">
                  <h3 class="mb-0 fw-bold text-white">Lector QR</h3>
                </div>
 
              </div>
            </div>
          </div>
            <div class="row mb-5 mt-6">
              <div class=" col-lg-3 mb-8 card rounded-1" >
                <div class="align-items-center" id="reader"></div>
            </div>
            </div>
 
            <div class="col-lg-3 align-items-center">
                    <label for="qr" class="form-label">Resultado</label>
                        <div class="col-lg-3" id="result" name="id" value="result"></div>
                </div>
                  <div class="row">
                   <div class="col-lg-3">
                          <input type="button" onclick="myFunction();" value="Enviar" />
 
                    </div>
                   </div>
           </div>
      </div>
  </div>
    <script type="text/javascript">
    let id = 0;
    function onScanSuccess(qrCodeMessage) {
        document.getElementById('result').innerHTML = '<input class="result" value="'+qrCodeMessage+'" name="id">';
      id = qrCodeMessage
    }
 
    function myFunction() {
      window.location='buscar_alumno/'+id;
  }
 
    function onScanError(errorMessage) {
      //handle scan error
    }
    var html5QrcodeScanner = new Html5QrcodeScanner(
        "reader", { fps: 10, qrbox: 250 });
    html5QrcodeScanner.render(onScanSuccess, onScanError);

escanear

En mi main.js
Recibo el id y realizo una consulta a la base de datos, al encontrarlo creo un arreglo con el nombre de enfila con los resultados de la consulta.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
main.get('/buscar_alumno/:id', async (req, res)=>{
    const id = req.params.id;
    if(id){
 
        connection.query('SELECT * FROM lectorqr.usuarios WHERE id =?', [id], async (error, results)=>{
            if(results.length == 0){
                res.render('qr',{
                    alert: true,
                    alertTitle: "Error",
                    alertMessage: "No existe ID",
                    alertIcon: 'error',
                    showConfirmButton: true,
                    timer: false,
                    ruta: 'qr'
                });
            }else{
 
                    res.render('index',{
                    enfila: results,
                    alert: true,
                    alertTitle: "Encontrado",
                    alertMessage: "ID correcto, verificando horario",
                    alertIcon: 'success',
                    showConfirmButton: false,
                    timer: 1500,
                    ruta: 'qr'
                });
            }
        })
    }
})


En la vista:
Utilizo el arreglo para mostrar la información como nombre y matricula del alumno.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<div class="row mb-5 mt-6">
            <!-- card -->
            <% enfila.forEach((fila)=>{ %>
            <div class=" col-lg-3 mb-4 card rounded-3" >
              <!-- card body -->
              <div class="card-body">
                <!-- heading -->
                <div class="d-flex justify-content-between align-items-center mb-2">
                  <div>
                    <figure class="block-4-image">
 
                      <img src="/resources/img/user.png" alt="" class="img-fluid"></a>
 
                    </figure>
                  </div>
                </div>
                <div>
                  <h2 class="fw-bold"><%= fila.nombre %></h2>
                  <p class="mb-0"><%= fila.matricula %></p>
 
                </div>
              </div>
            </div>
            <% }) %>
          </div>

espera
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder