Dark Mode

Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

mmdapl/egg-sequelize-plus

Repository files navigation

egg-sequelize-plus

Sequelize plugin for Egg.js,Based on egg-sequelize at present

NOTE: This plug-in integrates sequelize to egg.js on the basis of egg sequelize, provides dynamic database creation, realizes data dynamic deployment, and is perfectly compatible with all functions of the current egg sequelize plug-in more documentation please visit sequelize and egg-sequelize

Shi Yong Cha Jian

// {app_root}/config/plugin.js
exports.sequelizePlus = {
enable: true,
package: 'egg-sequelize',
};

Xiu Gai Pei Zhi

Li Ru ,Zai Mo Ren Huan Jing Xia Xiu Gai sequelizeCha Jian De Pei Zhi

// {app_root}/config/config.default.js
exports.sequelizePlus = {
dialect: 'mysql', // Zhi Chi De Shu Ju Ku Lei Xing ,Mu Qian Zhi Chi mysql
database: 'test', // Shu Ju Ku Ming Cheng ,Ru Guo Bu Cun Zai Hui Zi Dong Xin Jian
host: '127.0.0.1', // Shu Ju Ku Zhu Ji Di Zhi ,Mo Ren 127.0.0.1
port: 3306, // Shu Ju Ku Duan Kou ,Mo Ren 3306
username: 'root', // Yong Hu Ming ,Mo Ren root
password: 'root', // Mi Ma ,Mo Ren 123456
// delegate: 'myModel', // Jia Zai Suo You Mo Xing Wen Jian Dao appHuo Zhe ctxDui Xiang Shang De Shu Xing ,ctx[delegate]Huo Zhe app[delegate] Mo Ren :model
// baseDir: 'my_model', // Jiang app/${baseDir}Mu Lu Xia De Wen Jian Jia Zai Dao Shang Mian De delegateDui Xiang Zhong ,Yong Zuo Shu Ju Ku Biao Mo Xing ,Mo Ren :modelMu Lu Xia Suo You Wen Jian
// exclude: 'index.js', // Hu Lue Mo Xing Mu Lu Xia De Wen Jian ,Bi Mian Bei Jia Zai Dao Mo Xing Dui Xuan Na Ge Zhong ,Zhi Chi Zi Fu Chuan Huo Zhe Shu Zu ,Li Ru :'index.js' ['index.js'..]
// more sequelize options
logging: false, // Shi Fou Kai Qi Ri Zhi ,Mo Ren false
options: { // Qi Ta Can Shu
timezone: 'Asia/Shanghai',
pool: {
maxConnections: 5,
},
},
};

Dang Ran ,Ni Ye Ke Yi Shi Yong Lian Jie Zi Fu Chuan connectionUriZi Duan Lai Pei Zhi Shu Ju Ku Lian Jie ,Li Ru :

exports.sequelizePlus = {
dialect: 'mysql',
connectionUri: 'mysql://root:@127.0.0.1:3306/test', // Shu Ju Ku Lian Jie Zi Fu Chuan
};

Cha Jian Ben Shen Mo Ren De Lian Jie Pei Zhi ,Ni Ke Yi Zi Xing Pei Zhi Jin Xing Fu Gai ,Ju Ti You :

module.exports = {
delegate: 'model',
baseDir: 'model',
logging(...args) {
// if benchmark enabled, log used
const used = typeof args[1] === 'number' ? `[${args[1]}ms]` : '';
app.logger.info('[egg-sequelize]%s %s', used, args[0]);
},
host: 'localhost',
port: 3306,
username: 'root',
benchmark: true,
define: {
freezeTableName: false,
underscored: true,
}
}

Geng Duo Mo Ren Pei Zhi ,Ke Yi Cha Kan Pei Zhi Wen Jian config/config.default.js

Mo Xing Wen Jian

Zai Mo Ren Qing Kuang Xia ,Ji configDe Pei Zhi Zhong ,baseDirZi Duan Wei model. Wei Fang Bian egg-sequelizeCha Jian Chu Shi Hua ,Jian Yi Jiang Suo You De Mo Xing Wen Jian Du Fang Zai Mo Xing Mo Ren Wen Jian Mu Lu app/modelZhong ;

Ming Ming Fan Zhuan

Mo Xing Wen Jian Mu Lu Zhong De Mo Xing .jsWen Jian ,Zai Jin Xing sequelizeChu Shi Hua Hou ,Mo Ren Qing Kuang Xia Hui Gua Zai Dao app.model.xxxHuo Zhe ctx.model.xxxZhong ,Dan Hui Gen Ju Wen Jian Ming Cheng De Ming Ming Feng Ge ,Jin Xing Zi Dong Zhuan Hua .

Gui Ze Can Kao Ru Xia :

model file class name
user.js app.model.User
person.js app.model.Person
user_group.js app.model.UserGroup
user/profile.js app.model.User.Profile

Dui Shu Ju Ku Biao De Ding Yi ,Ru Xia Jian Yi :

  • Biao Ming Tong Yi Yong tblKai Tou ,Li Ru :tbl_user Yong Hu Biao tbl_account_info Zhang Hao Xin Xi Biao
  • Mei Zhang Biao Du Xu Yao You Wei Yi Zhu Jian ,Fang Bian Suo Yin ;
  • Biao Zhong Cun Zai Chuang Jian Shi Jian (create_time), Geng Xin Shi Jian (update_time), Shan Chu Shi Jian (delete_time)San Ge Zi Duan ,Fang Bian Ji Lu Cao Zuo Shi Jian , Ruan Shan Chu Deng
  • Biao Zi Duan Jian Yi Shi Yong Xia Hua Xian Xiao Xie Lian Jie ,Li Ru :user_name , user_id, login_count
  • Guan Yu Shi Jian ,Jian Yi Shi Yong 13Huo Zhe 10Shi Jian Chuo ,Fang Bian Jin Xing Shi Jian Fan Wei Jian Suo ,Lei Xing Jian Yi Shi Yong BIGINT

Biao Zhun Mo Xing Ding Yi

Te Bie Ti Xing ,Dang egg-sequelizeCha Jian Chu Shi Hua Wan Cheng Hou ,app.modelHe ctx.modelShang De Dui Xiang Shi Ji Yi Ge SequelizeDui Xiang Shi Li ,

Suo Yi Ke Yi Li Yong Ta Men Shi Yong Zai Sequelize ORMKuang Jia Ti Gong De Ren He Shi Li Fang Fa ,Li Ru :app.model.sync(Mo Xing Tong Bu ), app.model.query(Yuan Sheng SQLCha Xun )... so you can use methods like: app.model.sync, app.model.query ...

Ding Yi UserMo Xing

Zai app/modelMu Lu Xia ,Xin Jian user.jsWen Jian

// app/model/user.js
module.exports = app => {
const {STRING, INTEGER, DATE} = app.Sequelize;
const User = app.model.define('user', {
login: STRING,
name: STRING(30),
password: STRING(32),
age: INTEGER,
last_sign_in_at: DATE,
created_at: DATE,
updated_at: DATE,
});

User.findByLogin = async function (login) {
return await this.findOne({
where: {
login: login
}
});
}
// Jian Yi Bu Yao Shi Yong Jian Tou Han Shu
User.prototype.logSignin = async function () {
return await this.update({
last_sign_in_at: new Date()
});
}
return User;
};

Dui Yu Shang Mian De Ding Yi ,Ke Yi Jiang modelWen Jian De Zhi Ze Jin Xing Dan Yi Hua Chu Li ,Jiu Shi Zhi Zuo Liang Jian Shi :

  • Biao Jie Gou Ding Yi
  • Biao Shi Guan Lian Guan Xi Ding Yi

Dui Yu Zai UserDui Xiang Zhong Bang Ding Fang Fa ,Ke Yi Fang Zai serviceCeng Lai Xie ,Geng Hao De Shi Yong MVCGui Fan . Tui Jian modelWen Jian Ding Yi Ke Yi Can Kao :

{ return app.model.define('feedback', { id: { filed: 'id', type: BIGINT(10), primaryKey: true, autoIncrement: true, comment: 'Fan Kui Xin Xi Zhu Jian ', }, userid: { filed: 'user_id', type: STRING(60), allowNull: true, comment: 'Yong Hu id', }, type: { filed: 'type', type: INTEGER(2), defaultValue: 0, comment: 'Fan Kui Xin Xi De Lei Xing Hou Xu Tuo Zhan 1/2/3..', }, message: { filed: 'message', type: STRING(600), allowNull: false, comment: 'Fan Kui De Xin Xi ', }, create_time: { filed: 'create_time', type: BIGINT(13), allowNull: false, comment: 'Chuang Jian Shi Jian ', }, delete_time: { filed: 'delete_time', type: BIGINT(13), allowNull: false, defaultValue: 0, comment: 'Shan Chu Shi Jian ', }, }, { // Zhi Ding Shu Ju Ku Zhong Dui Ying De tbl_feed_backBiao tableName: 'tbl_feed_back', freezeTableName: false, // Shi Fou Zi Dong Tian Jia Shi Jian Chuo createAt,updateAt timestamps: false, }); };">'use strict';
/**
* Yong Hu Fan Kui Biao Dan Shu Ju
*/
const {STRING, BIGINT, INTEGER} = require('sequelize');
module.exports = app => {
return app.model.define('feedback', {
id: {
filed: 'id',
type: BIGINT(10),
primaryKey: true,
autoIncrement: true,
comment: 'Fan Kui Xin Xi Zhu Jian ',
},
userid: {
filed: 'user_id',
type: STRING(60),
allowNull: true,
comment: 'Yong Hu id',
},
type: {
filed: 'type',
type: INTEGER(2),
defaultValue: 0,
comment: 'Fan Kui Xin Xi De Lei Xing Hou Xu Tuo Zhan 1/2/3..',
},
message: {
filed: 'message',
type: STRING(600),
allowNull: false,
comment: 'Fan Kui De Xin Xi ',
},
create_time: {
filed: 'create_time',
type: BIGINT(13),
allowNull: false,
comment: 'Chuang Jian Shi Jian ',
},
delete_time: {
filed: 'delete_time',
type: BIGINT(13),
allowNull: false,
defaultValue: 0,
comment: 'Shan Chu Shi Jian ',
},
}, {
// Zhi Ding Shu Ju Ku Zhong Dui Ying De tbl_feed_backBiao
tableName: 'tbl_feed_back',
freezeTableName: false,
// Shi Fou Zi Dong Tian Jia Shi Jian Chuo createAt,updateAt
timestamps: false,
});
};

Zai Mo Xing Ding Yi Wan Cheng Hou ,modelJi Bei Gua Zai Dao appHe ctxDui Xiang Zhong ,Ke Yi Hen Fang Bian De Zai controllerHe serviceWen Jian Zhong Jin Xing Diao Yong ,Li Ru

// app/controller/user.js
'use strict';
const {Controller} = require('egg')

class UserController extends Controller {
async index() {
const users = await this.ctx.model.User.findAll();
this.ctx.body = users;
}

async show() {
const user = await this.ctx.model.User.findByLogin(this.ctx.params.login);
await user.logSignin();
this.ctx.body = user;
}
}
// app/service/user.js
'use strict';
const {Service} = require('egg')

class UserService extends Service {
async index() {
const {ctx, app} = this;
// Gen Ju Zhu Jian Cha Zhao
return await app.model.User.findByPk({id})
}

async showOne(id) {
const {ctx, app} = this;
// ctx.model.User Huo Zhe app.model.User
return await ctx.model.User.findOne({
id
});
}
}

Biao Guan Lian Guan Xi

Shi Yong sequelizeZhi Chi De Shu Ju Biao Guan Lian Cao Zuo ,Xu Yao Zai Model.associate()Zhong Ding Yi . egg-sequelizeZai Suo You De Mo Xing Jia Zai Wan Cheng Hou Zhi Xing . Li Ru :

Zhi Chi Duo Ge Shu Ju Ku Lian Jie

egg-sequelizeCha Jian Zhi Chi Du Li Jia Zai Duo Ge Shu Ju Ku Lian Jie Pei Zhi ;Ke Yi Shi Yong config.sequelize.datasourcesZi Duan Lai Jin Xing Pei Zhi ,Jia Zai Duo Ge Shu Ju Ku Lian Jie

// config/config.default.js
exports.sequelize = {
datasources: [
{
delegate: 'model', // load all models to app.model and ctx.model
baseDir: 'model', // load models from `app/model/*.js`
database: 'biz', // other sequelize configurations
},
{
delegate: 'admninModel', // load all models to app.adminModel and ctx.adminModel
baseDir: 'admin_model', // load models from `app/admin_model/*.js`
database: 'admin', // other sequelize configurations
}
]
};

Dang Ran ,Wei Liao Bian Yu Qu Fen ,Ke Yi Zai modelMo Xing Wen Jian Mu Lu Zhong ,An Zhao Shu Ju Ku Dui Mo Xing Jin Xing Qu Fen ,Li Ru :

{ return app.model.define('user', { login: STRING, name: STRING(30), password: STRING(32), age: INTEGER, last_sign_in_at: DATE, created_at: DATE, updated_at: DATE, }); }; // app/admin_model/user.js 'use strict'; const {STRING, INTEGER, DATE} = require('sequelize'); module.exports = app => { return app.adminModel.define('user', { login: STRING, name: STRING(30), password: STRING(32), age: INTEGER, last_sign_in_at: DATE, created_at: DATE, updated_at: DATE, }); };">// app/model/user.js
'use strict';
const {STRING, INTEGER, DATE} = require('sequelize');
module.exports = app => {
return app.model.define('user', {
login: STRING,
name: STRING(30),
password: STRING(32),
age: INTEGER,
last_sign_in_at: DATE,
created_at: DATE,
updated_at: DATE,
});
};


// app/admin_model/user.js
'use strict';
const {STRING, INTEGER, DATE} = require('sequelize');
module.exports = app => {
return app.adminModel.define('user', {
login: STRING,
name: STRING(30),
password: STRING(32),
age: INTEGER,
last_sign_in_at: DATE,
created_at: DATE,
updated_at: DATE,
});
};

Zhu Yi :You Yu Er Ji Mu Lu Bu Yi Yang ,Sui Ran Shang Shu Liang Ge .jsZhong Du Shi Ding Yi User,Dan Shi Ji Diao Yong Huan Shi Cun Zai Qu Bie ;app.model.xxx.User..

Ru Guo Ni Zai Bu Tong De Shu Ju Ku Lian Jie Pei Zhi Zhong Ding Yi Xiang Tong De modelShu Ju Ku Mo Xing ,Xiang Tong De Mo Xing .jsWen Jian Jiang Hui Zai Bu Tong De Shu Ju Ku Bei Zhi Xing Liang Ci , Yin Ci Xu Yao Shi Yong Di Er Ge Can Shu Lai Huo Qu sequelizeDui Xiang Shi Li ,Li Ru :

{ // modelWei Chuan Ru ,Bu Shi app.model return model.define('user', { login: STRING, name: STRING(30), password: STRING(32), age: INTEGER, last_sign_in_at: DATE, created_at: DATE, updated_at: DATE, }); };">// app/model/user.js
'user strict';
const {STRING, INTEGER, DATE} = require('sequelize');

// Zhu Yi Ci Shi ,.jsMo Xing Wen Jian Ding Yi Duo Yi Ge modelCan Shu ,Zhi Jie Zhi Ding
module.exports = (app, model) => {
// modelWei Chuan Ru ,Bu Shi app.model
return model.define('user', {
login: STRING,
name: STRING(30),
password: STRING(32),
age: INTEGER,
last_sign_in_at: DATE,
created_at: DATE,
updated_at: DATE,
});
};

Zi Ding Yi SequelizeMo Kuai

Zai Mo Ren Qing Kuang Xia ,egg-sequelizeCha Jian Jiang Hui Shi Yong Zui Xin Jiao Wei Wen Ding De sequelize@6 ,Zhi Chi Zi Ding sequelizeDe Ban Ben . Ji :Pei Zhi config.sequelize.SequelizeZi Duan

// config/config.default.js
'use strict';
exports.sequelize = {
// Ci Shi Yin Ru De Ban Ben ,Ke Yi Zai package.jsonZhong Zhi Ding Bing Xia Zai
Sequelize: require('sequelize')
};

Wan Zheng Shi Li

{ const Post = app.model.define('Post', { name: STRING(30), user_id: INTEGER, created_at: DATE, updated_at: DATE, }); // Biao Guan Lian Guan Xi Post.associate = function () { app.model.Post.belongsTo(app.model.User, { as: 'user' }); } return Post; }; // app/controller/post.js class PostController extends Controller { async index() { const posts = await this.ctx.model.Post.findAll({ attributes: ['id', 'user_id'], include: {model: this.ctx.model.User, as: 'user'}, where: {status: 'publish'}, order: 'id desc', }); this.ctx.body = posts; } async show() { const post = await this.ctx.model.Post.findByPk(this.params.id); const user = await post.getUser(); post.setDataValue('user', user); this.ctx.body = post; } async destroy() { const post = await this.ctx.model.Post.findByPk(this.params.id); await post.destroy(); this.ctx.body = { success: true }; } }">// app/model/post.js
'use strict';
const {STRING, INTEGER, DATE} = require('sequelize');
module.exports = app => {
const Post = app.model.define('Post', {
name: STRING(30),
user_id: INTEGER,
created_at: DATE,
updated_at: DATE,
});
// Biao Guan Lian Guan Xi
Post.associate = function () {
app.model.Post.belongsTo(app.model.User, {
as: 'user'
});
}
return Post;
};

// app/controller/post.js
class PostController extends Controller {
async index() {
const posts = await this.ctx.model.Post.findAll({
attributes: ['id', 'user_id'],
include: {model: this.ctx.model.User, as: 'user'},
where: {status: 'publish'},
order: 'id desc',
});
this.ctx.body = posts;
}

async show() {
const post = await this.ctx.model.Post.findByPk(this.params.id);
const user = await post.getUser();
post.setDataValue('user', user);
this.ctx.body = post;
}

async destroy() {
const post = await this.ctx.model.Post.findByPk(this.params.id);
await post.destroy();
this.ctx.body = {
success: true
};
}
}

Tong Bu Mo Xing Dao Shu Ju Ku

Qiang Lie Jian Yi Shi Yong SequelizeTi Gong De MigrationsQian Yi Fang An ,Jin Xing Shu Ju Ku De Zi Duan Qian Yi Geng Xin ,Yin Wei Ta Ji Lu Liao Ri Zhi ,Ke Yi Hui Gun !!!!!

Dang Ran ,Zai Ri Chang Kai Fa Zhong ,Ni Ye Ke Yi Hen Fang Bian Zai Kai Fa Huan Jing Zhong Jin Xing Ru Xia Pei Zhi ,Kuai Su Qian Yi , Xiu Gai Shu Ju Ku Biao Jie Gou . Zhong Yao De Shi Shuo San Bian

  • Yi Xia Pei Zhi ,Zhi Jian Yi Zai Kai Fa Huan Jing Zhong Pei Zhi Shi Yong ,Hui Zhi Jie Geng Xin Biao Jie Gou ,Fu Gai Shu Ju ;Sheng Chan Huan Jing Ji Qi Rong Yi Dao Zhi Shu Ju Diu Shi !!
  • Yi Xia Pei Zhi ,Zhi Jian Yi Zai Kai Fa Huan Jing Zhong Pei Zhi Shi Yong ,Hui Zhi Jie Geng Xin Biao Jie Gou ,Fu Gai Shu Ju ;Sheng Chan Huan Jing Ji Qi Rong Yi Dao Zhi Shu Ju Diu Shi !!
  • Yi Xia Pei Zhi ,Zhi Jian Yi Zai Kai Fa Huan Jing Zhong Pei Zhi Shi Yong ,Hui Zhi Jie Geng Xin Biao Jie Gou ,Fu Gai Shu Ju ;Sheng Chan Huan Jing Ji Qi Rong Yi Dao Zhi Shu Ju Diu Shi !!
{ // Zhu Yi Qian Zhi Tiao Jian Pan Duan if (app.config.env === 'local' || app.config.env === 'unittest') { app.beforeStart(async () => { await app.model.sync({force: true}); }); } };">// {app_root}/app.js
'use strict';
module.exports = app => {
// Zhu Yi Qian Zhi Tiao Jian Pan Duan
if (app.config.env === 'local' || app.config.env === 'unittest') {
app.beforeStart(async () => {
await app.model.sync({force: true});
});
}
};

Ke Neng Yu Dao De Wen Ti

Geng Duo Wen Ti Huan Ying issues Jiao Liu .

Kai Fa Zhe

You Qing Lian Jie

Zheng Shu

MIT

MIT License

Copyright (c) 2022 142vip FairySister RongJie Jie Hao Ke Ai

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

About

Jian Rong egg-sequelizeCha Jian De Suo You Pei Zhi He Gong Neng ,Jie Jue egg-sequelizeWu Fa Zi Dong Chuang Jian Shu Ju Ku Gong Neng

Topics

Resources

Readme

License

MIT license

Stars

Watchers

Forks

Packages

Contributors