migrations/201804041102_add_breeds.js#40
migrations/201804041102_add_breeds.js#40davisclick wants to merge 1 commit intoadoptapanama:developfrom davisclick:migration-razas
Conversation
fdvj
left a comment
There was a problem hiding this comment.
Buen trabajo. Una observación sobre el código, y adicional si revisas el build de travis, falló porque no se están cumpliendo reglas de linting. Localmente puedes correr npm run coverage para ver que linting falló, o puedes ver los resultados del build en Travis.
| updatedAt: Sequelize.DATE | ||
| }); | ||
|
|
||
| await action.createTable('breed_species',{ |
There was a problem hiding this comment.
Esta tabla no es necearia ya que no es una relación many-to-many, es decir, una raza no puede tener multiples especies, o viceversa. Por asi decirlo, la raza labrador es una raza solo de perros, no una raza de perros y gatos.
En este caso, la relación es un belongsTo, es decir, un breed belongsTo species. Y haces la relación colocando el campo specieId en la tabla de breed. Observa también que se escribe specieId y no specieID. Es importante que la d de Id este en minuscula por convención
There was a problem hiding this comment.
Gracias por las observaciones, estaré ejecutando correctivos al respecto.
There was a problem hiding this comment.
Hola, estuve realizando correcciones y antes de subirlas me gustaría saber si por esta vía puedes validar esto:
'use strict';
const { addIndex, removeIndex } = require('../lib/helpers').fn;
module.exports = {
up: async function(action, Sequelize, db) {
await action.createTable('breeds', {
id: {
type: Sequelize.UUID,
defaultValue: Sequelize.UUIDV4,
primaryKey: true,
allowNull: false
},
specieId: {
type: Sequelize.UUID,
allowNull: false
},
name: {
type: Sequelize.STRING(64),
allowNull: false
},
description: {
type: Sequelize.STRING(256),
allowNull: true
},
createdAt: Sequelize.DATE,
updatedAt: Sequelize.DATE
});
await db.query(addIndex('breeds', 'name'));
},
down: async function(action, Sequelize, db) {
await action.dropTable('breeds');
await db.query(removeIndex('breeds', 'name'));
}
};
'use strict';
const Sequelize = require('sequelize');
module.exports = function(db) {
const Breed = db.define('Breed', {
id: {
type: Sequelize.UUID,
defaultValue: Sequelize.UUIDV4,
primaryKey: true,
allowNull: false
},
specieId: {
type: Sequelize.UUID,
allowNull: false
},
name: {
type: Sequelize.STRING(64),
allowNull: false
},
description: {
type: Sequelize.STRING(256),
allowNull: true
}
}, {
tableName: 'breed'
});
// Static Methods
Breed.listBreed = function() {
return this.findAll();
};
Breed.getBreed = function(id) {
return this.findOne({
where: { id }
});
};
Breed.getByName = function(name) {
return this.findOne({
where: { name }
});
};
};
module.exports.register = function({ Breed, Specie }) {
Breed.belongsTo(Specie, {as: 'species', foreignKey: 'specieId'});
};
There was a problem hiding this comment.
Me parece que no tengo que agregar specieId en la tabla breeds , ¿ Breed.belongsTo(Specie, {as: 'species', foreignKey: 'specieId'}); sería el que lo hace?
Migration for bredds and bredd related with species.