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
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 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
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
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
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
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
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