$ npm install pg pg-hstore
$ npm remove sqlite3 --save
{
"development": {
"dialect": "postgres",
"database": "expenses-rest-api-development",
"host": "localhost",
"username": "postgres",
"password": "postgres"
}
}
Es necesario para evitar errores en los queries SQL
de postgres las siguientes actualizaciones en los modelos:
src/models/category.js
"use strict";
const { Model } = require("sequelize");
module.exports = (sequelize, DataTypes) => {
class Category extends Model {
static associate(models) {
models.Category.hasMany(models.Record, {
as: "records",
foreignKey: 'categoryId'
})
}
}
Category.init(
{
name: {
allowNull: false,
type: DataTypes.STRING,
},
type: {
allowNull: false,
type: DataTypes.STRING,
},
},
{
sequelize,
modelName: "Category",
tableName: "categories",
}
);
return Category;
};
src/models/record.js
"use strict";
const { Model } = require("sequelize");
module.exports = (sequelize, DataTypes) => {
class Record extends Model {
static associate(models) {
models.Record.belongsTo(models.Category, {
as: "category",
foreignKey: 'categoryId'
});
}
}
Record.init(
{
amount: DataTypes.FLOAT,
categoryId: {
type: DataTypes.INTEGER,
allowNull:false,
references:{
model: 'categories',
key: 'id'
}
},
date: DataTypes.DATE,
name: {
allowNull: false,
type: DataTypes.STRING,
},
type: {
allowNull: false,
type: DataTypes.STRING,
},
deleted: {
defaultValue: false,
type: DataTypes.BOOLEAN,
},
},
{
sequelize,
modelName: "Record",
tableName: "records",
}
);
return Record;
};
Te recomiendo iniciar un nuevo contenedor de postgres
para probar tu configuración.
$ docker run --name postgres -p 5432:5432 -e POSTGRES_PASSWORD=postgres -d postgres
Ahora puedes probar la nueva configuración con el comando npm run dev
.
$ docker build -t node-expenses-rest-api:latest .
$ docker run --name node-expenses-rest-api -p 3000:3000 -d node-expenses-rest-api