benjaminnaesen
6/8/2018 - 9:35 AM

Sequelize: model outline

Outline for Sequelize model.

module.exports = {
	underscored: true,
	timestamps: false,
};
const Sequelize = require("sequelize");
const defaultModelOptions = require("../helpers/defaultModelOptions");

const modelDefinition = {
	attribute: {
		type: Sequelize.STRING,
		allowNull: false,
		unique: true,
	},
	secondAttribute: {
		field: "second_attribute",
		type: Sequelize.BOOLEAN,
		defaultValue: true,
		allowNull: true,
	},
};

// Use default options and overwrite if necessary
const modelOptions = Object.assign({}, defaultModelOptions, { timestamps: true });

module.exports = (sequelize) => {
	const Model = sequelize.define("model", modelDefinition, modelOptions);
	
	Model.associate = models => {
		Model.belongsTo(models.other-model, {
			foreignKey: "other_model_id",
		});

		Model.belongsToMany(models.other-model, {
			through: "model_other-model",
			foreignKey: "other-model_id",
		});
	};

	return Model;
};