Vì vậy, bắt đầu cuộc phiêu lưu của tôi vào tất cả mọi thứ Node. Một trong những công cụ mà tôi đang cố gắng tìm hiểu là Sequelize. Vì vậy, tôi sẽ bắt đầu tắt những gì tôi đã cố gắng để làm:Phân tích lại lớpMethods vs instanceMethods
'use strict';
var crypto = require('crypto');
module.exports = function(sequelize, DataTypes) {
var User = sequelize.define('User', {
username: DataTypes.STRING,
first_name: DataTypes.STRING,
last_name: DataTypes.STRING,
salt: DataTypes.STRING,
hashed_pwd: DataTypes.STRING
}, {
classMethods: {
},
instanceMethods: {
createSalt: function() {
return crypto.randomBytes(128).toString('base64');
},
hashPassword: function(salt, pwd) {
var hmac = crypto.createHmac('sha1', salt);
return hmac.update(pwd).digest('hex');
},
authenticate: function(passwordToMatch) {
return this.hashPassword(this.salt, passwordToMatch) === this.hashed_pwd;
}
}
});
return User;
};
Tôi đang bối rối trên khi sử dụng classMethods vs instanceMethods. Với tôi khi tôi nghĩ về createSalt() và hashPassword() nên là các phương thức lớp. Họ là chung và cho hầu hết các phần không thực sự có bất cứ điều gì để làm với các trường hợp cụ thể họ chỉ được sử dụng nói chung. Nhưng khi tôi có createSalt() và hashPassword() trong classMethods tôi không thể gọi chúng từ instanceMethods.
Tôi đã cố gắng biến những điều sau đây:
this.createSalt();
this.classMethods.createSalt();
createSalt();
Something như dưới đây wont work và tôi có lẽ chỉ không hiểu một cái gì đó đơn giản.
authenticate: function(passwordToMatch) {
console.log(this.createSalt());
return this.hashPassword(this.salt, passwordToMatch) === this.hashed_pwd;
}
Mọi gợi ý/mẹo/hướng sẽ được đánh giá rất cao!
điều đó làm cho ý nghĩa với tôi và đó là những gì tôi loại hình chức năng quá chung chung như makeSalt() và hashPassword() nên phương pháp lớp học bởi vì họ thực sự có không liên quan gì đến ví dụ cụ thể. SO cho biết bây giờ vấn đề thực sự của tôi, tôi đoán là không thể gọi một classMethond bên trong instanceMethod của tôi và không chắc chắn những gì là thỏa thuận. – Silent
Tôi đã tham gia IRC và họ có thể giúp tôi. Một chút khác biệt của nó sau đó tôi cũng sử dụng các ngôn ngữ khác nhưng đó chỉ là một phần của quá trình học tập! vì nó là một phương thức lớp, nó trở thành một phần của mô hình, do đó bạn không phải sử dụng một cái gì đó như "cái này". bạn chỉ cần gọi nó là "User.getSalt()" vì vậy tất cả đều hoạt động như tôi mong đợi! – Silent
Tôi đánh giá cao sự giúp đỡ của bạn! – Silent