Kvell.js

Kvell.js

  • Docs
  • Database Plugins
  • Github

›Kvell Database Plugins

Kvell Database Plugins

  • Overview
  • kvell-db-plugin-sequelize
  • kvell-db-plugin-mongoose
Edit

Sequelize Plugin for kvell

Kvell-db-plugin-sequelize wraps up sequelize and exposes all three values required to be exposed by a kvell database plugin.

Install

npm i kvell-db-plugin-sequelize

You'll also have to manually install the driver for your database of choice:

npm install --save pg pg-hstore # Postgres
npm install --save mysql2
npm install --save mariadb
npm install --save sqlite3
npm install --save tedious # Microsoft SQL Server

Configuration Variables

Internally, kvell-db-plugin-sequelize will instantiate the database object using sequelize's contructor.

  • API reference for the sequelize constructor

  • Documentation for sequelize

Usage

Example:

  • kvell-plugins.js:
module.exports = {
  databasePlugins: [
    {
      resolve: "kvell-db-plugin-sequelize",
      options: {
        database: process.env.DATABASE_NAME,
        username: process.env.DATABASE_USERNAME,
        password: process.env.DATABASE_PASSWORD,
        options: {
          dialect: "mysql",
          host: "localhost",
          logging: false,
          dialectModulePath: require.resolve("mysql2")
        }
      }
    }
  ]
};
  • userModel.js:
const sequelize = require("kvell-db-plugin-sequelize").dbInstance;
const Sequelize = require("kvell-db-plugin-sequelize").dbLib;

// Create your User model's schema here and export it.

const User = sequelize.define("user", {
  id: {
    type: Sequelize.INTEGER,
    autoIncrement: true,
    allowNull: false
  },
  email: {
    unique: true,
    type: Sequelize.STRING,
    allowNull: false
  },
  password: {
    type: Sequelize.STRING,
    allowNull: true
  },
  userName: {
    type: Sequelize.STRING,
    allowNull: true
  }
});

module.exports = User;

To use it, install the package and add a databasePlugin object in kvell-plugins.js with the following fields:

  • resolve: Name of the plugin, i.e, kvell-db-plugin-sequelize

  • options: All the parameters that you need to pass in the sequelize constructor. The following keys are accepted:

    • database (string): The name of the database

    • username (string): The username which is used to authenticate against the database.

    • password (string): The password which is used to authenticate against the database. Supports SQLCipher encryption for SQLite.

    • options (Object): An object with options, with the following mandatory keys:

      • dialect (string): The dialect of the database you are connecting to. One of mysql, postgres, sqlite and mssql.

      • dialectModulePath* (string): Path to the dialect module. This field is mandatory. For example, if you are using mysql2 as your dialect module, you can specify it as follows:

        dialectModulePath: require.resolve("mysql2");
        

        You can add more keys that conform to the options object schema of sequelize's constructor api. You can read more on that here

    The plugin exports the following:

  • dbLib: The sequelize object. Check sequelize docs for complete api reference.

  • dbInstance: The instantiated sequelize instance

  • initHandler: (not for use)

Last updated on 7/16/2020 by Neeraj Sharma
← Overviewkvell-db-plugin-mongoose →
  • Install
  • Configuration Variables
  • Usage
Kvell.js
Docs
Getting StartedGuidesDatabase Plugins
Social
kvell
Follow @nsharma1396
Copyright © 2020 Neeraj Sharma.