egg官网的sequelize文档中只讲述了连接MySQL的案例,作者也是初学,在连接sqlserver时出现了一些错误,可能是对原sequelize.js没有太多了解,下面展示我的连接过程。
//创建egg基本项目
mkdir egg-project
npm init egg --type=simple
npm install
npm install --save egg-sequelize tedious
编写代码步骤是跟着egg-sequelize文档来的,有参考了sequelize的文档稍作了修改

图片中标注是接下来需要写代码的地方
首先配置插件
config/plugin.js
'use strict';
/** @type Egg.EggPlugin */
module.exports = {
// had enabled by egg
// static: {
// enable: true,
// }
sequelize:{
enable: true,
package:'egg-sequelize'
}
};
config/config.default.js
config.sequelize = {
dialect:'mssql', //填写要用的数据库类型,sqlserver的填mssql
database:'userDB',//自己的数据库名
host:'localhost',//地址
port:1433,//端口号,默认为1433,如有改动就根据改动的填
username:'sa',//连接sqlserver的用户名
password:'123456',//密码
dialectOptions: { //传统使用mssql的方法只需要写入options属性即可,在sequelize中options属性是在dialectOptions中的,所以这么写才会生效
options: {
useUTC: false,
dateFirst: 1,
encrypt: false,
}
}
}
插件配置好后,下面是作者写的一个简单接口,路由为‘/user’的get请求,查询users表中的所有数据
数据表

app/model/user.js
'use strict';
module.exports = (app) => {
const { STRING, INTEGER} = app.Sequelize;//从sequelize中结构出数据表中对应的字段类型,这里的id和age都是int,name为varchart
const User = app.model.define('user', {
id: { type: INTEGER, primaryKey: true, autoIncrement: true },
name: STRING(30),
age: INTEGER,
},
{ timestamps: false } //sequelize默认会自动去对应createAt和updataAt字段(字段名记不清了,大概是这俩),我的这个表中没有这两个字段所以设置timestamps属性为false
);
return User;
};
app/controller/user.js
// app/controller/users.js
const Controller = require('egg').Controller;
class UserController extends Controller {
async index() {
const ctx = this.ctx;
ctx.body = await ctx.model.User.findAll();
}
}
module.exports = UserController;
app/router.js
'use strict';
/**
* @param {Egg.Application} app - egg application
*/
module.exports = app => {
const { router, controller } = app;
router.get('/', controller.home.index);
router.get('/user', controller.user.index);//这是实现的连接sqlserver的接口
};
运行结果展示
npm run dev

经验总结
sequelize.js这个使用起来确实很方便,在使用egg本身的egg-sequelize插件时还是要遵循sequelize本身的默认设置,总结起来就是出问题了如果egg没毛病那就多看看sequelize的文档,根据程序的报错找找sequelize是否有对应属性的默认设置。