web-dev-qa-db-fra.com

Comment ajouter une fonction personnalisée à sequelize.js dans Node.JS?

Par exemple, j'ai un modèle client. Je veux ajouter une nouvelle fonction "sendEmail"

La fonction doit fonctionner envoyer un e-mail à un client ou envoyer un e-mail à plusieurs clients à la fois?

Où définir ces fonctions?

18

La version 4 de sequelize a changé cela et les autres solutions avec instanceMethods et classMethods ne fonctionnent plus. Voir Mise à niveau vers V4/Breaking changes

La nouvelle façon de procéder est la suivante:

const Model = sequelize.define('Model', {
    ...
});

// Class Method
Model.myCustomQuery = function (param, param2) {  };

// Instance Method
Model.prototype.myCustomSetter = function (param, param2) {  }
64
jlh

Utilisez instanceMethods comme Jan Meier l'a souligné.

Dans votre échantillon client:

// models/Client.js
'use strict';

module.exports = function(sequelize, DataTypes) {
  return sequelize.define('Client', {
    first_name: DataTypes.STRING,
    last_name: DataTypes.STRING,
  }, {
    instanceMethods: {
      getFullName: function() {
        return this.first_name + ' ' + this.last_name;
      }
    }
  });
};
11