Sequelize es un mapeador relacional de objetos (ORM) de Node.js que proporciona una API fácil de usar para bases de datos relacionales como Oracle, PostgreSQL, MySQL, MariaDB, SQLite y más.
PostgreSQL es un sistema de administración de bases de datos relacionales (RDBMS) de código abierto ampliamente utilizado, reconocido por sus amplias funciones, excelente seguridad y escalabilidad.
PostgreSQL es compatible con múltiples lenguajes de programación, incluido JavaScript, lo que lo convierte en una opción ideal para aplicaciones web y basadas en datos. Aquí aprenderá a configurar una base de datos de Postgres en Node.js usando Sequelize.
Paso 1: Instalación de dependencias
Antes de poder usar PostgreSQL, debe instalarlo en su sistema. Para descargar PostgreSQL, vaya a la Sitio web de PostgreSQL y elige tu sistema operativo. Si tiene problemas durante este proceso en macOS, consulte instalar PostgreSQL en macOS.
Alternativamente, puede usar PostgreSQL en la nube aprovechando plataformas como ElefanteSQL que ofrecen PostgreSQL como servicio.
A continuación, instale secuelar ejecutando el siguiente comando:
npm instalar secuela
Luego, instale el controlador de la base de datos PostgreSQL ejecutando el siguiente comando:
npm instalar pg pg-hstore
Paso 2: Conexión a una base de datos PostgreSQL
En el directorio fuente de su proyecto, cree un configuración carpeta. En el configuración carpeta, cree una db.js archivo. Este archivo contendrá todo el código que conecta su aplicación Node.js a una base de datos PostgreSQL.
A continuación, en su db.js archivo, importar Secuela de secuelar.
constante { Secuela } = requerir("secuela");
A continuación, debe crear un Secuela instancia. Esta instancia toma parámetros de conexión como el nombre de la base de datos, el nombre de usuario y la contraseña como argumentos. Alternativamente, toma un único URI de conexión como argumento.
Por ejemplo:
// Parámetros de conexión
constante secuelar = nuevo Secuela('base de datos', 'nombre de usuario', 'contraseña')
// con URI
constante secuelar = nuevo Secuela (process.env. POSTGRESQL_DB_URI)
Además, este constructor toma un objeto de configuración como argumento opcional.
Luego, pruebe su conexión de secuencia agregando el código debajo de su db.js archivo:
constante testDbConnection = asíncrono () => {
intentar {
esperar secuenciar.autenticar();
consola.registro("La conexión se ha establecido correctamente".);
} atrapar (error) {
consola.error("No se puede conectar a la base de datos:", error);
}
};
El bloque de código anterior llama al secuelar.autenticar() método para comprobar si la conexión es correcta e imprime "La conexión se ha establecido correctamente". para consolar si lo es. Si hay un error de conexión, imprime "No se puede conectar a la base de datos:" junto con el error.
Por último, exporte la instancia de secuenciación y el testDbConnection función.
módulo.exportaciones = { cuadrados: secuela, testDbConnection };
Paso 3: Creación de un modelo Sequelize
En el directorio fuente de su proyecto, cree un modelos carpeta. Esta carpeta contendrá todos sus modelos de secuelas. A continuación, cree un archivo de modelo. El nombre que le dé al archivo debe proporcionar información sobre la representación del modelo.
En su archivo de modelo, importe la instancia de secuenciación.
// ejemplo.js
constante { cuadrado } = requerir("../config/db");
A continuación, importe Tipos de datos de secuelar.
constante { Tipos de datos } = requerir("secuela");
Tipos de datos le permite establecer el tipo de datos requerido para cada propiedad en su modelo.
Puede crear un nuevo modelo de secuencia que represente una tabla en su base de datos llamando al definir en su instancia de secuenciación.
El definir El método toma dos argumentos: el nombre del modelo y un objeto de atributos. El nombre del modelo representa el nombre del modelo. El objeto de atributos representa las columnas de la base de datos, y cada propiedad representa una columna.
Aquí hay un ejemplo de un modelo de secuela:
constante Usuario = sq.define("usuario", {
correo electrónico: {
tipo: tipos de datos. CADENA,
permitir nula: FALSO,
Clave primaria: verdadero,
},nombre completo: {
tipo: tipos de datos. CADENA,
},
edad: {
tipo: tipos de datos. ENTERO,
},
empleado: {
tipo: tipos de datos. BOOLEANO,
valor por defecto: FALSO,
},
});
El bloque de código anterior define un Usuario modelo con un correo electrónico, nombre completo, edad, y empleado propiedades.
El correo electrónico La propiedad es un tipo de cadena que no puede estar vacía (allowNull: falso) y también actúa como la clave principal para el Usuario mesa (clave primaria: verdadero). El nombre completo y el edad propiedad son una cadena (Tipos de datos. CADENA) y tipo entero (Tipos de datos. ENTERO), respectivamente. El empleado property es un tipo booleano con un valor predeterminado de FALSO, lo que significa que si no se especifica, se establecerá automáticamente en falso en la base de datos.
A continuación, llame al sincronizar método en su modelo. Este método toma un objeto de configuración como argumento. Dependiendo de las opciones en el objeto de configuración, el sincronizar método puede:
- Usuario.sync(): Crea la tabla si no existe y no hace nada si existe.
- Usuario.sync({ fuerza: verdadero }): Cree la tabla y suelte la primera si ya existe.
- Usuario.sync({alterar: verdadero}): compruebe el estado actual de la tabla en la base de datos y realice los cambios necesarios en la tabla para que coincida con el modelo.
Por ejemplo:
Usuario.sync().entonces(() => {
consola.registro("Modelo de usuario sincronizado");
});
El bloque de código anterior crea la tabla de base de datos para el Usuario modelo si no existe y no hace nada si existe.
Finalmente, exporta tu modelo:
módulo.exportaciones = Usuario;
Consultando una base de datos PostgreSQL
Sequelize proporciona varios métodos que le permiten interactuar con su base de datos PostgreSQL sin escribir en bruto Comandos SQL.
Guardar datos en PostgreSQL
Para guardar datos en una base de datos PostgreSQL, llame al crear en su modelo y pase un objeto que implemente el modelo de PostgreSQL como argumento.
Por ejemplo:
constante mike = Usuario.crear({
correo electrónico: "[email protected]",
nombre completo: "Mike Smith",
edad: 30,
empleado: verdadero,
});
El bloque de código anterior crea un Usuario en vez de Miguel en su base de datos y genera automáticamente una identificación única.
Recuperación de datos de PostgreSQL
Los datos se pueden recuperar de varias formas desde una base de datos PostgreSQL mediante la secuenciación, pero depende de la naturaleza de los datos que desee recibir.
Los métodos más comunes para recuperar datos son el Encuentra uno y encuentra todos métodos. El encuentra todos devuelve todas las instancias de datos que satisfacen una consulta determinada, mientras que Encuentra uno devuelve la primera instancia que satisface la consulta.
Por ejemplo:
// Encuentra todos los usuarios
constante usuarios = esperar Usuario.findAll();
El código anterior devolverá todos los Usuario instancias en la base de datos.
Puede filtrar a través de los datos devueltos usando el dónde declaración. Esta declaración le permite agregar ciertas condiciones a la consulta. Su consulta solo devolverá instancias que cumplan con esas condiciones.
Por ejemplo:
Usuario.findAll({
dónde: {
empleado: FALSO
}
});
El código anterior devolverá todos los Usuario instancias con sus empleado propiedad establecida en FALSO en la base de datos
Actualización de datos en PostgreSQL
Puede actualizar los datos en la base de datos de PostgreSQL llamando al actualizar y pasando un filtro como argumento.
Por ejemplo:
esperar Usuario.actualizar({ empleado: verdadero }, {
dónde: {
empleado: FALSO
}
});
El código anterior cambia todos los Usuario instancias con un empleado valor de FALSO a verdadero.
Alternativamente, puede actualizar los datos modificando manualmente las propiedades que desea cambiar y llamando al ahorrar método en la instancia.
Por ejemplo:
constante usuarioMike = esperar Usuario.findOne({ dónde: { correo electrónico: "[email protected]" } });
si(usuarioMike !== nulo) {
usuarioMike.email = "[email protected]"
esperar usuarioMike.save()
}
El código anterior consulta la base de datos para un usuario que tenga el correo electrónico "[email protected]" usando el Encuentra uno método. Si se encuentra el usuario, reasigna la propiedad de correo electrónico a "[email protected]" y llama al ahorrar método para actualizar la base de datos.
Eliminación de datos en PostgreSQL
Puede eliminar datos en PostgreSQL llamando al destruir y pasando un filtro como argumento.
Por ejemplo:
esperar Usuario.destroy({
dónde: {
correo electrónico: "[email protected]"
}
});
El código anterior consulta la base de datos en busca de un usuario que tenga el correo electrónico "[email protected]" y elimina al usuario de la base de datos.
Beneficios de usar PostgreSQL con Sequlize
Escribir consultas SQL sin procesar para interactuar con una base de datos PostgreSQL puede ser una molestia. Con Sequelize, puede definir fácilmente modelos, crear asociaciones entre ellos y consultar la base de datos con una API simple e intuitiva. Alternativamente, puede usar otros ORM, como TypeORM, para interactuar con una base de datos PostgreSQL sin la molestia de escribir consultas SQL sin formato.