Sequelize classMethods vs instanceMethods
All the method who don't modify or check any type of instance should be classMethod
and the rest instanceMethod
ex:
// Should be a classMethodsfunction getMyFriends() { return this.find({where{...}})}// Should be a instanceMethodsfunction checkMyName() { return this.name === "george";}
Although the basics are that instance
methods should be used when you want to modify your instance
( ergo row ). I would rather not pollute the classMethods
with methods that don't use the class
( ergo the table ) itself.
In your example I would put hashPassword
function outside your class and leave it as a helper function somewhere in my utilities module ( or why not the same module but as a normal defined function ) ... like
var hashPassword = function(...) { ... }...... instanceMethods: { authenticate: function( ... ) { hashPassword( ... ) } }
I found this worked for me as of sequelize 3.14
var myModel = sequelize.define('model', {}, { classMethods: { someClassMethod: function() { return true; }}, { instanceMethods: { callClassMethod: function() { myModel.someClassMethod(); } }});