Sequelize是一個基于 promise 的 Node.js ORM(對象關系映射)。
目前支援 Postgres、MySQL、MariaDB、SQLite和Microsoft SQL Server; 它具有強大的事務支援, 關聯關系, 預讀和延遲加載,讀取複制等功能。
官方網址:
https://sequelize.org/v5/index.html
npm安裝:npm install --save sequelize
使用何種資料庫,要安裝對應的npm類庫,對應的幾類資料庫安裝:
資料庫的初始化代碼:
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