Sequelize support for Node.js

Introduction

Sequelize is a promise-based Node.js ORM tool for Postgres, MySQL, SQLite, Microsoft SQL Server, Oracle Database - see https://sequelize.org/docs/ for more information.

Objects

This extension creates the entity, entity operation and query objects:

  • a Node.js entity object when the APIs ‘define’ or ‘init’ of a Sequelize.Model instance is found.
  • a Node.js entity operation object when one of the supported Sequelize APIs is used and linked to one of the entities.
  • a Node.js SQL query object when the API ‘query’ is found.
Icon Description
Node.js entity
Node.js entity operation
Node.js SQL query

Supported persistence SQL databases

Supported operations

Entity Operation Supported APIs
Add
  • Model.create
  • Model.bulkCreate
Update
  • Model.update
  • Model.restore
  • Model.increment
  • Model.decrement
Remove
  • Model.destroy
Select
  • Model.findAll
  • Model.findByPk
  • Model.findOne
  • Model.findOrCreate
  • Model.findAndCountAll
  • Model.count
  • Model.max
  • Model.min
  • Model.sum

‘Model’ above can be defined by ‘Sequelize.define’ or using a class extending ‘Sequelize.Model’.

Link Type Caller type Callee type Comment
callLink
  • JavaScript function
  • JavaScript initialisation
  • JavaScript source code
  • Node.js entity operation
  • Node.js SQL query
relyonLink
  • Node.js entity
  • JavaScript class
When the entity is defined using a class extending ‘Sequelize.Model’.
useInsertLink
  • Node.js entity operation: Add
  • Node.js SQL query
  • Table
  • Missing Table
Created by SQL Analyzer when DDL source files are analyzed or by Missing tables and procedures for Node.js when the object is not analyzed.
useUpdateLink
  • Node.js entity operation: Update
  • Node.js SQL query
  • Table
  • Missing Table
Created by SQL Analyzer when DDL source files are analyzed or by Missing tables and procedures for Node.js when the object is not analyzed.
useDeleteLink
  • Node.js entity operation: Remove
  • Node.js SQL query
  • Table
  • Missing Table
Created by SQL Analyzer when DDL source files are analyzed or by Missing tables and procedures for Node.js when the object is not analyzed.
useSelectLink
  • Node.js entity operation: Select
  • Node.js SQL query
  • Table
  • Missing Table
Created by SQL Analyzer when DDL source files are analyzed or by Missing tables and procedures for Node.js when the object is not analyzed .

Example

Take the following codes of javascript file:

const Sequelize = require('sequelize');
const sequelize = new Sequelize('sqlite::memory:');

class User extends Sequelize.Model { }
User.init(
  {
    // ... (attributes)
  },
  {
    sequelize,
    modelName: 'user',
  }
);

await User.findAll().then(t_user=> { });

const Post = sequelize.define(
  'post',
  {
    // ... (attributes)
  },
  {
    freezeTableName: true,
  },
);

await Post.update({ isClos: true });

function userSearch (req) {
    var query = "SELECT name,id FROM Users WHERE login='" + req.body.login + "'";
    db.sequelize.query(query, {
        model: db.User
    })
      .then(user => {
    })
};

In this example, two ‘Node.js Entity’ objects, two ‘Node.js Entity Operation’ objects, and a ‘SQL Query’ object are created. A ‘relyOn’ link is added when entity ‘user’ is defined using a class extending ‘Sequelize.Model’. The SQL Analyzer links these entity operations and this query with the corresponding tables. In the present case, this extension creates two ‘useSelect’ and a ‘useUpdate’ links to the missing tables ‘Users’ and ‘post’: