empezando
Este artículo registra el uso básico de Sequelize paso a paso desde la instalación hasta la conexión a la base de datos, la adición, eliminación, modificación y verificación.
documento
Instalar
npm i sequelize // Esto instalará la última versión de Sequelize
npm i mysql2 // Instale manualmente el controlador para la base de datos seleccionada, aquí tomamos MySQL como ejemplo
usar
Primero intente escribir una demostración simple (consulte a continuación la descripción específica de la configuración y la API utilizada en la demostración, puede ubicarla rápidamente a través del directorio).
- Crear una nueva carpeta de prueba de secuela
- En la carpeta npm init -y
- npm instalar mysql2 secuenciar --guardar
- Cree una nueva carpeta src en sequelize-test.
Conectarse a la base de datos
Cree uno nuevo en src: db.js
const { Sequelize } = require('sequelize')
const conf = {
host: 'localhost',
dialect: 'mysql' // 连接到的数据库的方言。mysql、postgres、sqlite、db2、mariadb和mssql之一。
}
// 创建 sequelize 实例,依次传入 database username password options
const seq = new Sequelize(
'sequelize_test', // database 数据库名称
'root', // username 用户名
'你的密码', // password 密码
conf // options
)
Tenga en cuenta que la base de datos correspondiente debe crearse primero, de lo contrario, la conexión fallará.
conexión de prueba
// 用 authenticate 测试连接
seq.authenticate().then(() => {
console.log('Connection has been established successfully.');
}).catch((error) => {
console.error('Unable to connect to the database:', error);
})
Ingrese a la terminal node src/db.js
e intente ejecutarlo (la imagen a continuación es cómo se ve después de una conexión exitosa):
Si falla la conexión, recuerde verificar si el nombre de usuario y la contraseña se han ingresado incorrectamente. Puede ver lo que se imprimirá si ingresa la contraseña incorrecta:
Si la base de datos rellenada en la configuración no existe, el mensaje de error es el siguiente:
crear modelo
Cree uno nuevo en src: model.js.
const Sequelize = require('sequelize')
const seq = require('./db')
// User 模型
// define 接收两个参数,第一个是名称,第二个是配置,配置各个列。
const User = seq.define(
// 同步到数据库的 users 表。默认情况下, Sequelize 会自动将模型名转为复数并用作表名。
'user',
{
// id 不用定义,sequelize 会帮我们增加上
// 默认情况下,Sequelize 使用数据类型 DataTypes.DATE 自动向每个模型添加 createdAt 和 updatedAt 字段.
username: {
type: Sequelize.STRING, // 数据类型:VARCHAR(255)
allowNull: false // 设为必填
},
password: {
type: Sequelize.STRING,
allowNull: false
},
realname: {
type: Sequelize.STRING,
}
}
)
Sincronizar modelo con base de datos
Cree un nuevo archivo sync.js en src, sync significa sincronización.
const seq = require('./db')
// 需要同步的模型
require('./model')
// 将模型同步到数据库
seq.sync().then(() => {
process.exit() // 退出进程
})
Entrada de terminal node src/sync.js
, intente ejecutar:
Puedes echar MySQLWorkbench
un vistazo a:
nuevos datos
Crea un nuevo create.js bajo src:
const { User } = require('./model')
!(async function () {
// 创建 user
const ly = await User.create({
username: 'ly',
password: '123',
realname: '梨衣衣'
})
console.log('ly:', ly)
})()
Mire los resultados impresos: solo necesitamos usar los valores de datos en él.
Podemos MySQLWorkbench
echar un vistazo: (He creado dos piezas de datos antes del ejemplo, y la tercera pieza se acaba de agregar)
encontrar datos
Crea un nuevo select.js bajo src:
1. Consultar un dato
const { User } = require('./model')
!(async function() {
// 模拟登录(通过查询一条数据的方式)
const sl = await User.findOne({
// 查询条件
where: {
username: 'sl',
password: '123'
}
})
console.log('sl:', sl.dataValues)
})()
Ingrese en la terminal node src/select.js
y vea el resultado de la impresión:
2. Consulta múltiples piezas de datos:
const Sequelize = require('sequelize')
const { User } = require('./model')
!(async function() {
const userList = await User.findAll({
// 条件
where: {
username: {
// 模糊查询,相当于`select * from users where username like '%${keyword}%'`
[Sequelize.Op.like]: '%l%'
}
},
// 排序
order: [
['id', 'desc'] // 相当于 SQL 语句:order by id desc,根据id倒序排序
]
})
console.log('userList:', userList.map(item => item.dataValues))
})()
Ingrese en la terminal node src/select.js
y vea el resultado de la impresión:
cambiar los datos
Crea un nuevo update.js bajo src:
const { User } = require('./model')
!(async function () {
const res = await User.update(
// 修改的内容 (示例修改 realname 和 password)
{
realname: '梨衣',
password: '111'
},
// 条件(要修改哪条数据)
{
where: {
id: 3
}
}
)
console.log('修改后的res', res)
})()
Ingrese en la terminal node src/update.js
y vea el resultado de la impresión:
El valor de res es el número de elementos afectados por esta operación: [1] significa que un elemento se ha modificado correctamente. [0] indica que se han modificado 0 elementos.
Podemos MySQLWorkbench
echar un vistazo, el último dato ha sido modificado:
borrar datos
Crea un nuevo delete.js bajo src:
const { User } = require('./model')
!(async function () {
const res = await User.destroy({
where: {
id: 3,
username: 'ly'
}
})
console.log('删除后的res:', res)
})()
Ingrese en la terminal node src/delete.js
y vea el resultado de la impresión:
El valor de res es el número de entradas eliminadas en esta operación: 1 significa que 1 entrada se eliminó correctamente.
API y configuración complementaria de datos
crear instancia
Configure el nombre de la base de datos, el nombre de usuario, la contraseña, etc., y cree una instancia de secuenciación.
Algunos parámetros que se pueden pasar cuando se crea una secuencia nueva: database
, username
, password
, options
.
Entre ellas, las opciones incluyen host
, port
, password
, database
, dialect
etc.
Para parámetros específicos, consulte la documentación (constructor)
dialecto
El dialecto de la base de datos a la que conectarse. Uno de mysql, postgres, sqlite, db2, mariadb y mssql.
API
autenticar()
Puede usar este método para probar si la conexión es normal.
definir()
- Defina un nuevo modelo que represente una tabla en la base de datos.
- El segundo parámetro pasa un objeto, que se utiliza para definir cada columna de la tabla, y la clave del objeto corresponde a la columna de la tabla.
sincronizar ()
- Sincronice todos los modelos definidos con la base de datos.