DataTable加载时间太慢

时间:2019-01-27 01:42:08

标签: jquery node.js angular postgresql datatable

伙计们,我在那里遇到了一个问题,我很高兴,因为我确实做到了表(dataTable)在我的项目中可以正常工作,但是现在可以测试多少行可以支持我的项目了: 2000行:显示4秒。 8000行:显示40秒。 20000行:计算不到的((

我将Angular 7,Nodejs,PostgreSQL,express,jquery用于表库。 这是我的代码:

寄存器的组成部分:(list.ts)-在这里我调用dataTable并对其进行配置-

export class ListComponent implements OnInit {
  users$: any[] = [];
  dtOptions: DataTables.Settings = {};
  dtTrigger: Subject<any> = new Subject();

  public denuncias: Denuncia[];
  constructor(
    private _denunciaService: DenunciaService
  ) {

  }

  ngOnInit(): void {
    this.dtOptions = {
      "paging": true,
      language: {
        processing: "Procesando...",
        search: "Buscar:",
        lengthMenu: "Mostrar _MENU_ registros",
        info: "Mostrando elementos del _START_ al _END_ de un total de _TOTAL_ registros",
        infoEmpty: "No existen registros",
        infoFiltered: "(Filtrados _MAX_ elementos en total).",
        infoPostFix: "",
        loadingRecords: "Cargando....",
        zeroRecords: "No existen registros de denuncias",
        emptyTable: "No se encontraron resultados.",
        paginate: {
          first: "Primer",
          previous: "Anterior",
          next: "Siguiente",
          last: "Último"
        },
        aria: {
          sortAscending: ": Activar para ordenar ascendentemente",
          sortDescending: ": Activar para ordenar descendentemente"
        }
      }
    };
    this.getDenuncias();
  }

  getDenuncias() {
    this._denunciaService.getDenunciasxd().subscribe(response => {
      this.denuncias = response.data;
      this.dtTrigger.next();
    },
      error => {
        console.log(<any>error);
      })
  }

  ngOnDestroy(): void {
    this.dtTrigger.unsubscribe();
  }
}

这是代码HTML

<table class="table table-hover table-bordered" datatable [dtOptions]="dtOptions" [dtTrigger]="dtTrigger">
        <thead class="">
            <tr>
                <th id="ID">ID</th>
                <th id="FACULTAD">Locacion</th>
                <th id="DETALLE">Detalle de los hechos</th>
                <th id="FECHA">Fecha</th>
                <th id="ESTADO">Estado</th>
                <th id="DELETE">Detalle</th>
            </tr>
        </thead>
        <tbody class="align-middle">
            <tr *ngFor="let denuncia of denuncias" class="align-middle">
                <td class="align-middle" style="font-family: consolas">
                    {{denuncia.numeroDenuncia}}
                </td>
                <td class="align-middle">
                    {{denuncia.FacultadDependencia}}
                </td>
                <td class="align-middle">
                    {{denuncia.detalleHechos}}
                </td>
                <td class="align-middle">
                    {{denuncia.fechaDenuncia}}
                </td>
                <td class="align-middle">
                    {{denuncia.Estado}}
                </td>
                <td class="align-middle">
                    <a class="button" title="Aprende a crear un blog" href="/delete/<%= data[i].numeroDenuncia %>"></a>
                </td>
            </tr>
        </tbody>
    </table>

这是后端中的控制器:

const controller = {};
const { Pool } = require('pg');

var connectionString = 'postgres://me:system@localhost/antisobornodb';
const pool = new Pool({
    connectionString: connectionString,
})

controller.listar = async(request, response) => {
    try {
        const result = await pool.query(
            'SELECT "detalleHechos", "Estado","numeroDenuncia","FacultadDependencia","Estado","fechaDenuncia" ' +
            'FROM tb_anonima UNION ALL ' +
            'SELECT "detalleHechos", "Estado","numeroDenuncia","FacultadDependencia","Estado","fechaDenuncia" ' +
            'FROM tb_juridica UNION ALL ' +
            'SELECT "detalleHechos", "Estado","numeroDenuncia","FacultadDependencia","Estado","fechaDenuncia" ' +
            'from tb_natural');
        // return response.render('registros', );
        return response.status(200).send({ data: result.rows });
    } catch (err) {
        // return next(err);
        console.log(err);
    }
};
module.exports = controller;

这段代码很好用,但是我认为只需1-1500行,我不需要数百万行,这是我工作的一个小项目,也许我需要读取的最大行数将是15000或20000,不再。

预先感谢:D

0 个答案:

没有答案