天天看點

node.js使用Sequelize操作資料庫

Sequelize是一個基于 promise 的 Node.js ORM(對象關系映射)。

目前支援 Postgres、MySQL、MariaDB、SQLite和Microsoft SQL Server; 它具有強大的事務支援, 關聯關系, 預讀和延遲加載,讀取複制等功能。

官方網址:

​​https://sequelize.org/v5/index.html​​

npm安裝:npm install --save sequelize

使用何種資料庫,要安裝對應的npm類庫,對應的幾類資料庫安裝:

node.js使用Sequelize操作資料庫

資料庫的初始化代碼:

const Sequelize = require('sequelize');

//第一種方式:傳遞資料庫連接配接資訊(ip、端口、使用者名密碼等)

sequelize = new Sequelize('database', 'username', 'password',{

host: 'localhost',

 dialect: /* one of 'mysql' | 'mariadb' | 'postgres' | 'mssql' */});

//第二種方式:使用uri的字元串連接配接方式

sequelize = new Sequelize('postgres://user:[email protected]:5432/dbname');

驗證資料庫連接配接是否成功:

    sequelize.authenticate().then(() => {     console.log('Connection has been established successfully.');

}).catch(err => {

console.error('Unable to connect to the database:', err);

});

// await方式:

 await sequelize.authenticate();

資料庫的操作上,隻要是以模型和資料庫的表進行對應,同時也支援sql語句的查詢方式。

模型定義(https://sequelize.org/v5/manual/models-definition.html):

const Model = Sequelize.Model;

class User extends Model {}

User.init({

//屬性設定     

firstName: {

 type: Sequelize.STRING,

 allowNull: false

  },      lastName: {       type: Sequelize.STRING

    }}, {

//屬性設定  

  sequelize,

  modelName: 'user'  

 });

需要注意的是,上述定義一個user的模型,需要對應在資料庫表中,有users這個表,要實作自己定義表名,需要在屬性中設定以下兩個參數:

      freezeTableName: false,

   tableName: 'define_user'

直接執行sql語句查詢(https://sequelize.org/v5/manual/raw-queries.html):

sequelize.query("SELECT * FROM `users`", { type: sequelize.QueryTypes.SELECT})

 .then(users => {    

//傳回json對象

 })

參考文檔:

官網:

​​https://sequelize.org/v5/index.html​​