Sequelize é uma ferramenta ORM baseada em Promisses Node.js para Postgres, MySQL, MariaDB, SQLite, Microsoft SQL Server, Oracle Database, Amazon Redshift e Data Cloud da Snowflake.
Ele possui suporte sólido a transações, relações, replicação de leitura e muito mais.
Escolhemos o Oracle XE como database do nosso exemplo em função da sua popularidade e especificidade, mas todos os exemplos abaixo servem para qualquer um dos bancos de dados listados acima.
Se esta é sua primeira vez aqui, recomendamos a leitura dos conteúdos abaixo antes de continuar:
CREATE TABLE TESTANDO (ID NUMBER PRIMARY KEY, TX_DESCRICAO VARCHAR2(30), VALOR NUMBER(2), DT_INSERT DATE, DT_UPDATE DATE); COMMIT;
INSERT INTO TESTANDO VALUES (1, 'PRIMEIRO TESTE', 42, SYSDATE, SYSDATE);
COMMIT;
SELECT * FROM TESTANDO;
npm i sequelize --savenpm i sequelize-oracle --savenpm i oracledb --savesails generate helper sequelize-oracle-connection
Successfully generated:
•- api/helpers/sequelize-oracle-connection.js
A few reminders:
(1) To call this helper:
// With default usage:
await sails.helpers.sequelizeOracleConnection(…, …);
// With named parameters:
await sails.helpers.sequelizeOracleConnection.with({
someInput: …,
someOtherInput: …
});
(2) You can read more about helpers in the Sails documentation.
[?] https://sailsjs.com/docs/concepts/helpers
module.exports = {
friendlyName: 'Sequelize oracle connection',
description: '',
inputs: {
},
exits: {
success: {
description: 'All done.',
},
},
fn: async function (inputs) {
const Sequelize = require('sequelize');
return new Sequelize('oracle://username:password@oracle-server:port/service');
}
};
sails generate model testando, nem crie o arquivo na pasta / diretório api/models. api chamado 'schema' e depois o arquivo Testando.js (api/schema/Testando.js)/** * Retorna um Objeto Testando obtido da
* camada de persistencia passada como parametro * * * @return Testando ORM */ const Sequelize = require('sequelize'); module.exports = function (sequelize) { return sequelize.define('Testando', { id: { type: Sequelize.STRING, field: 'ID', primaryKey: true }, descricao: { type: Sequelize.STRING, field: 'TX_DESCRICAO' }, createdAt: { type: Sequelize.DATE, field: 'DT_INSERT' }, updatedAt: { type: Sequelize.DATE, field: 'DT_UPDATE' } }, { tableName: 'TESTANDO', schema: '' // SOMENTE SE O ESQUEMA FOR DIFERENTE DO NOME DO USUARIO LOGADO }); };
sails generate action testando.
Você verá no console:
Successfully generated:
•- api/controllers/get-testando.js
A few reminders:
(1) For most projects, you'll need to manually configure an explicit route
in your `config/routes.js` file; e.g.
'GET /api/v1/get-testando': { action: 'get-testando' },
(2) If you are using the built-in JavaScript SDK ("Cloud") for AJAX requests
from client-side code, then after configuring a new route, you'll want to
regenerate the SDK setup file using:
sails run rebuild-cloud-sdk
(3) This new action was generated in the "actions2" format.
[?] https://sailsjs.com/docs/concepts/actions
(4) Last but not least, since adding an action or route is a backend change,
don't forget to re-lift the server before testing!
'GET /api/v1/get-testando': { action: 'get-testando' }, ao arquivo config/routes.jsconfig/policies.js e adicione a linha 'get-testando': true, para permitir o acesso a rota /api/v1/get-testando sem a necessidade de autenticaçãoapi/controllers/get-testando.js criado acima e modifique para que tenha o seguinte conteúdo:
module.exports = {
friendlyName: 'Testando',
description: 'Testando something.',
inputs: {
},
exits: {
},
fn: async function (inputs) {
/* solicita ao core do Sails que obtenha a conexao do helper */
let sequelize = await sails.helpers.sequelizeOracleConnection();
/* carrega o modelo de dados associado a tabela */
let Testando = require('../schema/Testando')(sequelize);
/* acessa a base de dados e faz a leitura dos dados armazenados */
let teste = await Testando.findAll({limit:10});
/* devolve um objeto de dados para o requisitante (HTTP Request) */
return {teste};
}
};
sails lift, depois digite na barra de navegação: http://localhost:1337/api/v1/get-testando
{
"teste": [
{
"id": 1,
"descricao": "PRIMEIRO TESTE",
"createdAt": "2023-09-04T20:11:11.000Z",
"updatedAt": "2023-09-04T20:11:11.000Z"
}
]
}
return {teste} para return teste e a resposta então deverá ser:
[
{
"id": 1,
"descricao": "PRIMEIRO TESTE",
"createdAt": "2023-09-04T20:11:11.000Z",
"updatedAt": "2023-09-04T20:11:11.000Z"
}
]
sails lift, depois digite na barra de navegação: http://localhost:1337/api/v1/get-testandoEste é um exemplo simplificado para demonstrar como acessar uma base de dados utilizado
Sequelize associado aos recursos do Sails.js.
Visite o site Sequelize V6 e conheça outras opções de
manipulação de dados.