web-dev-qa-db-ja.com

Node.JSのsequelize.jsにカスタム関数を追加するにはどうすればよいですか?

たとえば、クライアントモデルがあります。新機能「sendEmail」を追加したい

関数は、1つのクライアントにメールを送信するために機能する必要があるか、一度に多くのクライアントにメールを送信するために必要ですか?

それらの関数をどこで定義するのですか?

18

Sequelizeのバージョン4はこれを変更し、instanceMethodsおよびclassMethodsを使用する他のソリューションは動作しなくなりました。参照 V4へのアップグレード/重大な変更

新しい方法は次のとおりです。

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

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

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

Jan Meier が指摘するようにinstanceMethodsを使用します。

クライアントサンプル:

// 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;
      }
    }
  });
};