sequelize.define
使用該方法可以定義model,例子如下:
const Sequelize = require('sequelize');
var sequelize = new Sequelize(config.database, config.username, config.password, {
host: config.host,
dialect: 'mysql',
pool: {
max: 5,
min: 0,
idle: 30000
}
});
var Website = sequelize.define('website', {
id: {
type: Sequelize.BIGINT,
primaryKey: true,
autoIncrement: true
},
url: Sequelize.STRING(255),
title: Sequelize.STRING(255),
status: Sequelize.INTEGER,
delete_mark: Sequelize.BOOLEAN
}, {
timestamps: false
});
該方法傳入的第一個引數是資料表的單數形式,怎么理解呢?例如這里傳入的是website其實是模型名,資料表默認是websites這樣的復數形式,這種約定我在Laravel中也碰見過,
也就是常說的,約定大于定義,也就是說,如果我們都按照約定的規范去開發,那么效率其實比重新定義,要高很多,
那么,定義好了模型,該怎么進行使用呢?
(async () => {
let demo = await Website.create({
url:'http://www.xxxx.com/',
title:'demo'
});
console.log(demo);
})();
繼承Model
const {Sequelize, DataTypes, Model} = require('sequelize');
const config = require('../config');
const sequelize = new Sequelize(config.database, config.username, config.password, {
host: config.host,
dialect: 'mysql',
pool: {
max: 5,
min: 0,
idle: 30000
}
});
/**
* @author chaojilaji
* 資料表websites的關系物件映射
*/
class WebSite extends Model {
}
WebSite.init({
id: {
type: Sequelize.BIGINT,
primaryKey: true,
autoIncrement: true
},
url: Sequelize.STRING(255),
title: Sequelize.STRING(255),
status: Sequelize.INTEGER,
delete_mark: Sequelize.BOOLEAN
}, {
sequelize,
modelName: 'Website',
timestamps:false
});
(async () => {
await sequelize.sync();
let x = await WebSite.create({
url: 'http://www.xxxxxxxx.com/',
title: 'demo2'
});
console.log(x);
})();
module.exports = WebSite;
我比較推薦使用繼承Model這種方式,通過創建一個class,這樣可以使用model.exports=模塊名的方式,將該模型封裝起來,供別的地方使用,只需要require進去即可,
具體如何對資料表進行操作,就比較簡單了,只需要參考API即可,sequelize檔案地址
本文由博客群發一文多發等運營工具平臺 OpenWrite 發布
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/187383.html
標籤:其他
