sequelize 的快速入门
sequelize 是一个 orm 框架,说起 ORM,Object Relational Mapping,有 Hibernate,JPA 等成熟的 Java 框架。
Sequelize 是 JS 端的 hibernate,用于使用 nodejs 完成 server 端到数据库的 CRUD 等等操作。
安装
// 使用 NPM
npm install --save sequelize
# 还有以下之一:
$ npm install --save pg pg-hstore
$ npm install --save mysql2
$ npm install --save sqlite3
$ npm install --save tedious // MSSQL
建立连接
const sequelize = new Sequelize('database', 'username', 'password', {
host: 'localhost',
dialect: 'mysql',
pool: {
max: 5,
min: 0,
idle: 10000
}
})
测试连接
您可以使用 .authenticate()
函数来测试连接。
sequelize
.authenticate()
.then(() => {
console.log('Connection has been established successfully.')
})
.catch(err => {
console.error('Unable to connect to the database:', err)
})
定义模型
模型使用sequelize.define('name', {attributes}, {options})
来定义.
const User = sequelize.define('t_user', {
firstName: {
type: Sequelize.STRING
},
lastName: {
type: Sequelize.STRING
}
})
// 初始化表
// force: true 如果表已经存在,将会丢弃表
// alter: true 如果表已存在,不过丢弃,如果不存在会直接创建表
User.sync({ alter: true })
Sequelize 的字段类型
文档地址:Sequelize 的字段类型
你可以在models-definition查看更多模型定义的内容
更多查询相关逻辑:querying
创建查询
// 查询所有user
async function queryAllUser() {
let data = await User.findAll()
return data
}
User.findAll().then(users => {
console.log(users)
})
// 查询所有user,返回对应字段
async function queryAllUser() {
let data = await User.findAll({
attributes: ['username', 'role', 'userId']
})
return data
}
// 根据userId进行查询
async function queryUserById(userId) {
let data = await User.findAll({
attributes: ['username', 'role', 'userId'],
where: {
userId: userId
}
})
return data
}
// 通过默认生成的id进行查询
User.findById(123)
// 查询时新增分页逻辑
async function queryUserList(start, limit) {
let data = await User.findAndCountAll({
offset: start * limit,
limit: limit
})
return {
data: data.row,
count: data.count
}
}
操作数据库表
// 给t_user表新增数据
User.create({
username: '张三',
password: '123456'
})
// 更新数据
User.update(params, {
where: {
userId: userId
}
})
// 删除数据
User.destroy({
where: {
userId: userId
}
})
网友评论