GeoSan_Web_Server Page History


Express

npm install -g express-generator

para criar o framework express na pasta/projeto geosanweb

express geosanweb

Vá para pasta do projeto

cd geosanweb

Agora instale as dependências

npm install

Lembrar que por questões de registro do nome Jade ele foi modificado para Pug

npm install pug

Agora rode a app

SET DEBUG=geosanweb:* npm start

No navegador entre

http://localhost:3000/

React

Para instalar o React globalmente

npm install -g create-react-app

Para criar uma aplicação somente com React

create-react-app my-app

Referências

React Autocomplete

React Downshift

Downshift example

React enhancement

React junto com Express

Instalar o Express como descrito anteriormente e executar os procedimentos a seguir:

Como tanto o Express e React utilizam a porta 3000, vamos colocar o Express rodando na porta 3001 para não termos conflito.

set PORT=3001

ou no Powershell

$env:PORT = "3001"

Para verificar se realmente foi configurado este número de porta para o Express, no PowerShell, entre com o comando:

get-childitem env:PORT

Agora abra uma nova janela de comandos e de dentro da pasta do geosanweb crie o framework React com o comando

create-react-app client

Esta é a forma em que o React no frontend irá conversar com o Express no backend.

Verifique se na pasta client no arquivo package.json (não na pasta geosanweb) está da seguinte forma:

  "scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
    "test": "react-scripts test --env=jsdom",
    "eject": "react-scripts eject"
  },
  "proxy": "http://localhost:3001"

A porta 3001 deve ser igual a porta em que o Express está rodando.

Para iniciar a aplicação rode na segunda janela de comandos, a do React:

node bin/www

Agora o Express está rodando na porta 3001 e o React na porta 3000

Referência

React com Express

Node.JS Acesso ao Postgres

npm install pg

Configuração da conexão

// Conexão com Postgres
var pg = require("pg");
pg.defaults.poolSize = 25;

var config = {
  host: '127.0.0.1', // server name or IP address;
  hostaddr: '127.0.0.1',
  port: 5432,
  database: 'gis',
  user: 'postgres',
  password: 'nexus243',
  max: 10, // max number of clients in the pool
  idleTimeoutMillis: 30000 // how long a client is allowed to remain idle before being closed
  }
router.get('/sql', function(req, res) {
var pool = new pg.Pool(config);
  pool.connect(function(err, client, done){
    if (err){
      console.log("não capaz de realizar a conexão com o banco de dados" + err);
      res.status(400).send(err);
    }

    // definição do schema em que irá realizar as queries
    client.query('SET search_path TO public, sc_mbc, gw_saa',function(err1,result){
      if(err1){
        console.log("Não foi capaz de mudar o schema " + err1);
        res.status(400).send(err1);
      }
    })

    // realiza querie no banco postgres, retornando em result o resultado de toda a querie
    client.query('SELECT connec_id FROM connec',function(err1,result){
      done(); //fecha a conexão
      if(err1){
        console.log("não capaz de realizar a querie com o banco de dados" + err1);
        res.status(400).send(err1);
      }
      console.log (result.rows);
    })
  })
  pool.end();
});

Referencia

Leitura das colunas da querie

Atualização/remoção de módulos

Para atualizar e/ou remover os módulos que não estão mais no packages.json, rode o comando

npm prune

Node.JS Acesso ao SQL Server

npm install mssql --save

Exemplo de código para conexão

/* GET map page. */
router.get('/sql', function(req, res) {
  var mssql = require('mssql');

  // config for your database
  var msconfig = {
      user: 'sa',
      password: 'Nexus243',
      server: 'localhost\\SQLEXPRESS', 
      // ou server: '127.0.0.1\\SQLEXPRESS', 
      // ou server: 'NOME_DO_SERVIDOR\\SQLEXPRESS', 
      database: 'comercial', 
      port: '1444',
      dialect: 'mssql'
      // options: {
      //   encrypt: true
      // }
      // dialectOptions: {
      //   instanceName: 'SQLEXPRESS'
      // }
  };

Atenção para o número da porta que deve ser 1444 e não 1413

options.instanceName - The instance name to connect to. The SQL Server Browser service must be running on the database server, and UDP port 1444 on the database server must be reachable.

Exemplo com conexão e querie junto ao banco de dados:

/* GET sql querie */
router.get('/sql', function(req, res) {
  var mssql = require('mssql');

  // config for your database
  var msconfig = {
      user: 'sa',
      password: 'Nexus243',
      server: 'localhost\\SQLEXPRESS', 
      database: 'comercial', 
      port: '1444',
      dialect: 'mssql'
  };
  // connect to your database
  mssql.connect(msconfig, function (err) {

    if (err) console.log(err);

    // create Request object
    var request = new mssql.Request();

    // query to the database and get the records
    request.query('select TOP (10) COD_DAE, NOME from cadastro', function (err, recordset) {     
        if (err) console.log(err)
        // send records as a response
        res.send(recordset);

    });
  });
});

Referências

node-msql

Problemas de conexão

não é possível se conectar ao provedor WMI

Fetch rows no nodejs com mssql

Uma vez com o recordsets lido a seguir um exemplo para acessar a primeira linha do banco de dados.

recordsets.recordset[0].NOME + " - " + recordsets.recordset[0].novo_cod_dae;

Abaixo um exemplo de código para colocar todas as listas em um array:

var findAllConsumers = function(callback, err) {
  var qrySql =
    "select COD_DAE, COD_DAE + 9000000 as novo_cod_dae, NOME from cadastro";
  poolMsql.request().query(qrySql, function(err, recordsets) {
    if (err || recordsets.recordset.length === 0) {
      console.log("Não realizou a querie: \n" + err);
      return callback(null, err);
    } else {
      var allConsumers = [];
      recordsets.recordset.forEach(element => {
        allConsumers.push(element.NOME + " - " + element.novo_cod_dae);
      });
      return callback(allConsumers, undefined);
    }
  });
};

module.exports = findAllConsumers;

Referências

mssql

Nodejs - tempo para executar uma querie

Para determinar o tempo de execução de uma querie abaixo é mostrado um exemplo de código:

// get a timestamp before running the query
var pre_query = new Date().getTime();
// run the job
connection.query(query, function(err, rows, fields) {
  // get a timestamp after running the query
  var post_query = new Date().getTime();
  // calculate the duration in seconds
  var duration = (post_query - pre_query) / 1000;
});

Referências

Tempo execução querie

Arrays multidimensionais

Exemplo:

      var allConsumers = [];
      recordsets.recordset.forEach(element => {
        var valueToPush = {};
        valueToPush.label = element.NOME + " - " + element.novo_cod_dae;
        valueToPush.value = element.novo_cod_dae;
        allConsumers.push(valueToPush);
      });

Referências

Push em arrays multidimensionais

PowerShell

Configuração para iniciar no diretório desejado

powershell.exe -NoExit -command "& {Set-Location $env:systemroot}"

GeoServer

Linux - Start server in the command line

Type the following commands:

cd /usr/share/geoserver/bin
sh startup.sh

Porta do servidor de mapas

Windows

Mudança da porta do servidor de mapas

Linux

To Jetty servers:

In the file /usr/share/geoserver/start.ini, change the following line with your port number

jetty.port=8080

Last edited by José Maria Villac Pinheiro