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 --save
npm i sequelize-oracle --save
npm i oracledb --save
sails 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.js
config/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-testando
Este é 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.