Sequelize Connection support us to connect to database.
Functions:
/**
* @method connectWithSSL Connect to batabase by ssl
* @param params IConnectionProductionMode
* @returns Sequelize
*/
function connectWithSSL(params: IConnectionProductionMode): Sequelize;
/**
* @method connectWithOptions Connect to database with options
* @param params IConnectionDevelopmentMode
* @returns Sequelize
*/
function connectWithOptions(params: IConnectionDevelopmentMode): Sequelize;
/**
* @method connect Create a connection to database by Sequelize
* @param params IConnection
* @returns Sequelize
*/
function connect(params: IConnection): Sequelize;
/**
* @method dialectConvert Convert a string to Dialect
* @param dialect string | undefined
* @returns Dialect
*/
function dialectConvert(dialect: string | undefined): Dialect;
Example:
// ES6
// Connection.ts
import { connect, connectWithSSL, connectWithOptions } from "sequelize-typescript-connection";
import { Sequelize } from "sequelize-typescript";
import { ConnectionDevelopmentENVType, ConnectionProductionENVType, ConnectionType } from "sequelize-typescript-connection/dist/@types";
// Variables of production environment
const databaseURL = process.env.DATABASE_URL || "your-database-url";
const models = ["path of models folder"];
const connection: IConnectionProductionMode = {
databaseURL: databaseURL,
models: models,
};
const sequelize = connectWithSSL(connection);
......
// Variables of development environment
const models = ["path of models folder"];
const database = process.env.DATABASE || "your-database";
const user = process.env.USER || "postgres";
const password = process.env.PASSWORD || "your-password ";
const host = process.env.HOST || "0.0.0.0";
const dialect = process.env.DIALECT || "postgres";
const databasePort = process.env.DATABASE_PORT || "5432";
const connection: IConnectionDevelopmentMode = {
models: models,
database: database,
username: user,
password: password,
dialect: dialect,
host: host,
port: databasePort,
};
const sequelize = connectWithOptions(connection);
......
// Variables of production environment
const models = ["path of models folder"];
const databaseURL = process.env.DATABASE_URL || "your-database-url";
// Variables of development environment
const database = process.env.DATABASE || "your-database";
const user = process.env.USER || "postgres";
const password = process.env.PASSWORD || "your-password ";
const host = process.env.HOST || "0.0.0.0";
const dialect = process.env.DIALECT || "postgres";
const databasePort = process.env.DATABASE_PORT || "5432";
const connection: IConnection = {
models: models,
databaseURL: databaseURL,
database: database,
username: user,
password: password,
dialect: dialect,
host: host,
port: databasePort
};
const sequelize = connect(connection);
......
// User.model.ts
import { Sequelize, Table, Column, Model } from "sequelize-typescript";
import { SMALLINT, STRING }
// Define model
@Table
class User extends Model<User> {
@Column({type: SMALLINT, primaryKey: true, autoIncrement: true })
public id!: number;
@Column({type: STRING, allowNull: false, validate: { isEmail: true, len: [10, 30] } })
public username!: string;
@Column({type: STRING, allowNull: false, validate: { len: [10, 20] } })
public password!: string;
}
export default User;
......
// DefineAssociationAndSync.ts
// Sync models in database
(async () => {
await sequelize.sync();
await sequelize.models.User.create({ username: "admin@gmail.com", password: "acbxyz" });
})();